C
来源:互联网 发布:网络拓扑图图标下载 编辑:程序博客网 时间:2024/06/17 23:23
Think:
1知识点:并查集
2反思:并查集初始化操作应注意已知n进而进行初始化
vjudge题目链接
以下为Accepted代码
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 1e3 + 4;int n, m, f[N];void Init();int get_f(int x);void Merge(int u, int v);int main(){ int T, i, u, v, ans; scanf("%d", &T); while(T--){ scanf("%d %d", &n, &m); ans = 0; Init(); while(m--){ scanf("%d %d", &u, &v); Merge(u, v); } for(i = 1; i <= n; i++){ if(f[i] == i) ans++; } printf("%d\n", ans); } return 0;}void Init(){ for(int i = 1; i <= n; i++) f[i] = i;}void Merge(int u, int v){ int t1 = get_f(u); int t2 = get_f(v); f[t2] = t1;}int get_f(int x){ if(f[x] == x) return f[x]; else { f[x] = get_f(f[x]); return f[x]; }}
阅读全文
1 0