fork download
  1. #include <bits/stdc++.h>
  2. #define pb push_back
  3. #define pii pair<int,int>
  4. #define endl "\n"
  5. #define vi vector<int>
  6. #define io ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  7. using namespace std;
  8.  
  9. vi parent;
  10. int n,m;
  11.  
  12. inline void init(){
  13. parent.resize(n+2);
  14.  
  15. for(int i=1;i<=n;i++){
  16. parent[i]=i;
  17. }
  18. }
  19.  
  20.  
  21. inline int findtree(int k){
  22. if(k==parent[k])return k;
  23. else{
  24. int root=findtree(parent[k]);
  25. parent[k]=root;
  26. return root;
  27. }
  28. }
  29.  
  30. inline void merge(int x,int y){
  31. x=findtree(x),y=findtree(y);
  32. if(x!=y){
  33. if(x<y)swap(x,y);
  34. parent[x]=y;
  35. }
  36. }
  37.  
  38. int main(){
  39. io
  40. while(cin>>n>>m){
  41. init();
  42. int x,y;
  43. for(int i=0;i<m;i++){
  44. cin>>x>>y;
  45. merge(x,y);
  46. }
  47. int k;cin>>k;
  48. cout<<findtree(k)<<endl;
  49. }
  50.  
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0s 5496KB
stdin
10 6
1 2
3 6
2 7
6 7
4 5
5 8
3

stdout
1
1 1 1 4 4 3 1 4 9 10