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];    }}