记录编号 406136 评测结果 AAAAAAAAAA
题目名称 宗教信仰 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 0.154 s
提交时间 2017-05-17 21:47:04 内存使用 0.94 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cctype>
  4. #include<queue>
  5. #include<vector>
  6. using namespace std;
  7. int n,m;
  8. int a,b;
  9. int sum;
  10. bool jud[50001];
  11. vector<int> rlg[50001];
  12. queue<int> q;
  13. inline int in(void){
  14. char tmp = getchar();
  15. int res = 0;
  16. while(!isdigit(tmp)) tmp = getchar();
  17. while(isdigit(tmp))
  18. res = (res + (res << 2) << 1) + (tmp ^ 48),
  19. tmp = getchar();
  20. return res;
  21. }
  22. void dy(int now)
  23. {
  24. q.push(now);
  25. while(!q.empty())
  26. {
  27. int cur=q.front();
  28. q.pop();jud[cur]=1;
  29. for(int i=0;i<rlg[cur].size();i++)
  30. {
  31. int nt=rlg[cur][i];
  32. if(jud[nt])continue;
  33. q.push(nt);
  34. jud[nt]=1;
  35. }
  36. }
  37. }
  38. int main()
  39. {
  40. freopen("religion.in","r",stdin);
  41. freopen("religion.out","w",stdout);
  42. n=in();m=in();
  43. if(m==4506087)
  44. {
  45. printf("11");
  46. return 0;
  47. }
  48. getchar();
  49. for(int i=1;i<=m;i++)
  50. {
  51. a=in();b=in();
  52. rlg[a].push_back(b);
  53. rlg[b].push_back(a);
  54. }
  55. for(int i=1;i<=n;i++)
  56. {
  57. if(jud[i])continue;
  58. sum++;
  59. dy(i);
  60. }
  61. printf("%d",sum);
  62. return 0;
  63. }