• VNOJ
  • Home
  • PRoblems
  • Submissions
  • Users
    >
    • Organizations
  • Contests
  • Wiki
  • About
    >
    • FAQ
    • Custom checker
    • Tag
    • Judges
    • Devlog
    • Github
    • Tickets
    • Thư viện đề thi
    • Đề xuất contest
  • Tạp chí
VI EN Log in  or  Sign up

k30thiennhan

  • About
  • Statistics
  • Blogs

Problems solved: 21
Rank by points: #10824
Total points: 4.32
Contribution points: -28

View submissions

2 contests written
Rank by rating: #4776
Rating: 1206
Min. rating: 1206
Max rating: 1208

From Trường THPT chuyên Hoàng Lê Kha, Tây Ninh, Trường Đại Học Công Nghệ Thông Tin - Đại học Quốc gia TP.HCM, Trường Đại học Khoa học Tự nhiên - Đại học Quốc gia TP.HCM

About

include <bits/stdc++.h>

define int long long

using namespace std; const int N = 1e5 + 2; int n, m, scc[N], num[N], lownum[N], nscc, cnt, tplt[N]; stack<int> s; vector<int> adj[N];

void Tajan(int u) { num[u] = lownum[u] = ++cnt; s.push(u); for(auto v : adj[u]){ if(scc[v]) continue; if(!num[v]){ Tajan(v); lownum[u] = min(lownum[u], lownum[v]); } else lownum[u] = min(lownum[u], num[v]); } if(num[u] == lownum[u]){ nscc++; scc[u] = nscc; tplt[nscc] = u; while(s.top() != u){ scc[s.top()] = nscc; tplt[nscc] = min(tplt[nscc], s.top()); s.pop(); } s.pop(); } }

signed main() { cin.tie(nullptr)->syncwithstdio(false);

cin >> n >> m;
for(int i=1; i<=m; i++){
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
}

for(int i=1; i<=n; i++){
    if(num[i] == 0){
        cnt = 0;
        Tajan(i);
    }
}
if(nscc == 1) cout << "YES";
else{
    cout << "NO" << '\n';
    sort(tplt+1, tplt+nscc+1);
    for(int i=1; i<=2; i++){
        cout << tplt[i] << ' ';
    }
}
return 0;

} /* 4 5 1 2 2 3 3 1 1 4 3 4 */

Badges & Awards

This user has not earned any badges or awards.

«    »
Sun
Mon
Tues
Wed
Thurs
Fri
Sat
Less
More

Rating history

, #

proudly powered by DMOJ | follow us on Github and Facebook