SDUT 1488 数据结构实验:连通分量个数

来源:互联网 发布:sql语言分为几种类型 编辑:程序博客网 时间:2024/06/05 06:32

点击打开题目链接

#include <bits/stdc++.h>using namespace std;int pre[1010];int Find(int x);int join(int x, int y);int main(){    int n, m, k;    cin >> k;    while(k --)    {        cin >> n >>  m;        for(int i = 1; i <= n; i++)        {            pre[i] = i;        }        for(int i = 1; i <= m; i++)        {            int x, y;            cin >> x >> y;            join(x, y);        }        int num = 0;        for(int i = 1; i <= n; i++)        {            if(pre[i] == i)            {                ++num;            }        }        cout << num << endl;    }    return 0;}int Find(int x){    int r = x;    while(pre[r] != r)        r = pre[r];    int i = x, j;    while(i != r)    {        j = pre[i];        pre[i] = r;        i = j;    }   return r;}int join(int x, int y){    int fx = Find(x), fy = Find(y);    if(fx != fy)    {        pre[fx] = fy;    }}


0 0