• VNOJ
  • Trang chủ
  • Danh sách bài
  • Các bài nộp
  • Thành viên
    >
    • Tổ chức
  • Các kỳ thi
  • Wiki
  • Thông tin
    >
    • FAQ
    • Trình chấm ngoài
    • Tag
    • Máy chấm
    • Devlog
    • Github
    • Tickets
    • Thư viện đề thi
    • Đề xuất contest
  • Tạp chí 2025
VI EN Đăng nhập  hoặc  Đăng ký

k30thiennhan

  • Thông tin
  • Thống kê
  • Blog

Số bài đã giải: 21
Hạng điểm: #8905
Tổng điểm: 4,32
Đóng góp: -11

Xem các bài nộp

Đã tham gia 2 kỳ thi
Hạng rating: #4516
Rating: 1206
Min. rating: 1206
Max rating: 1208

Từ 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

Thông tin

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 */

Huy hiệu

Người dùng này không có huy hiệu nào.

«    »
CN
T2
T3
T4
T5
T6
T7
Ít
Nhiều

Lịch sử rating

, #

dựa trên nền tảng DMOJ | theo dõi VNOI trên Github và Facebook