fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<vector<int> >g(20005);
  5. bool vis[20005];
  6.  
  7. int xx,yy,a,b,n,t;
  8.  
  9. void dfs(int source, bool p)
  10. {
  11. if(vis[source]==true)
  12. return;
  13. vis[source]=true;
  14. if(p)
  15. xx++;
  16. else
  17. yy++;
  18. int sz=g[source].size();
  19. for(int i=0;i<sz;i++)
  20. dfs(g[source][i],!p);
  21. return;
  22. }
  23.  
  24. int main()
  25. {
  26. cin>>t;
  27. for(int i=1;i<=t;i++)
  28. {
  29. memset(vis,false,sizeof vis);
  30. for(int j=0;j<=20004;j++)
  31. g[j].clear();
  32.  
  33. cin>>n;
  34. for(int j=1;j<=n;j++)
  35. {
  36. scanf("%d%d",&a,&b);
  37. g[a].push_back(b);
  38. g[b].push_back(a);
  39. }
  40. int ans=0;
  41. for(int j=1;j<=20003;j++)
  42. if(vis[j]==false && g[j].size()>0)
  43. {
  44. xx=yy=0;
  45. dfs(j,true);
  46. ans+=max(xx,yy);
  47. }
  48. cout<<"Case "<<i<<": "<<ans<<endl;
  49. }
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 15264KB
stdin
1
6
1 2
3 4
5 6
2 7
2 8
3 9
stdout
Case 1: 6