Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.63 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. void mb(const vector<vector<int>>& edges, int sp,vector<bool>& was){
  6.     was[sp]=1;
  7.     for (int x:edges[sp]) if (!was[x]){
  8.         mb(edges,x,was);   
  9.     }
  10. }
  11.  
  12. int findroot(const vector<vector<int>>& edges){
  13.     vector<bool> was(edges.size());
  14.     int ret;
  15.     for (int i=0; i!=was.size();++i) if (!was[i]){
  16.         mb(edges,i,was);
  17.         ret=i;
  18.     }
  19.     return ret+1;
  20. }
  21.  
  22. int main(){
  23.     int N,M;
  24.     cin>>N>>M;
  25.     vector<vector<int>> e(N),eT(N);
  26.     for (int i=0; i!=M;++i){
  27.         int a,b;
  28.         cin>>a>>b;
  29.         --a;--b;
  30.         e[a].push_back(b);
  31.         eT[b].push_back(a);
  32.     }
  33.     cout<<findroot(eT)<<" "<<findroot(e)<<"\n";
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement