hdu1213

来源:互联网 发布:淘宝小卖家还能做吗 编辑:程序博客网 时间:2024/05/23 15:44

并查集的思想,只要有相关关系的要坐在一起,设计到find函数和nuion函数的相关功能构建。

#include <iostream>#include <fstream>#include <memory.h>using namespace std;int cat[1002];int N,M,count;void initial(int n){    for(int i = 1;i <= n;i ++)    cat[i] = i;}int find(int n){    return (cat[n] == n ? n :find(cat[n]));}void unit(int n1,int n2){    int x = find(n1);int y = find(n2);    if(x == y) return;//这是总共有N棵树,按照程序执行,先判断的是不成立的情况,很显然要进行count--操作,并联在一起,    count --;         //而不同的情况则是存在与上面基础之上,该数据已经处理过,而此时没有进行count--的    cat[y] = x;       //必要}int main(){    //ifstream cin("in.txt");    int T;    cin >> T;    while(T --)    {        memset(cat,0,sizeof(cat));        cin >> N >> M;        initial(N);        count = N;        int temp1,temp2;;        for(int i = 1;i <= M;i ++)        {            cin >> temp1 >> temp2;            unit(temp1,temp2);        }        cout << count << endl;    }    return 0;}


0 0
原创粉丝点击