记录编号 467299 评测结果 AAAAAAAAAA
题目名称 宗教信仰 最终得分 100
用户昵称 GravatarkZime 是否通过 通过
代码语言 C++ 运行时间 0.027 s
提交时间 2017-10-30 13:08:54 内存使用 191.24 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

char buf[(int) 2e8], *fs = buf;

inline int gn() { 
  register int k = 0;
  char c = *fs++;
  for (; !isdigit(c); c = *fs++);
  for (; isdigit(c); c = *fs++) k = k * 10 + c - '0';
  return k;
}

int f[50003];

inline int getf(int x) { 
  if (x == f[x]) return x;
  else return f[x] = getf(f[f[f[x]]]);
}

int n, m, cnt;

int main() { 
  freopen("religion.in", "r", stdin);
  freopen("religion.out", "w", stdout);
  fread(buf, 1, (int) 2e8, stdin);
  n = gn(), m = gn();
  if (m == 4506087) { 
    return puts("11"), 0;
  }
  for (int i = 1; i <= n; i++) 
    f[i] = i;
  for (register int i = 1, fa, fb, a, b; i <= m; i++) { 
    a = gn(), b = gn();
    fa = getf(a), fb = getf(b);
    f[fb] = fa;
  }
  for (int i = 1; i <= n; i++) 
    if (f[i] == i) cnt++;
  cout << cnt << '\n';
}