zoukankan      html  css  js  c++  java
  • HDU1213_How Many Tables

    题目大意:         让你输入n,m,n代表有n个人,m代表有m组表示其关系的数据,最后要求输出,能够把这n个点分为几组,注意,如果a与b有关系,b与c有关系,那么a与c也有关系。 解题思路:         直接用并查集查找就行了,查找分为几组。 代码:
    #include
    using namespace std;
    const int MAX=1005;
    
    int pre[MAX];
    int find(int x)
    {
    	int r=x;
    	while(pre[r]!=r)
    	{
    		r=pre[r];
    	}
    	//r此刻为根节点
    	while(pre[x]!=r)//x值随便改变,优化,一个一个拿去接根节点
    	{
    		int j=pre[x];
    		pre[x]=r;
    		x=j;
    	}
    	return r;//返回根节点
    }
    void init()
    {
    	for(int i=1;i>cas;
    	while(cas--)
    	{
    		cin>>n>>m;
    		init();
    		for(i=0;i>a>>b;
    			int f1=find(a);
    			int f2=find(b);
    			if(f1!=f2)
    				pre[f2]=f1;
    		}
    		int count=0;
    		for(j=1;j<=n;j++)
    		{
    			if(pre[j]==j)
    				count++;
    		}
    		cout<
    
     
  • 相关阅读:
    开课博客
    今天干了啥
    今天干了啥
    今天干了啥
    今天干了啥
    今天干了啥
    四则运算
    冲刺二(2)
    用户体验评价
    冲刺二(1)
  • 原文地址:https://www.cnblogs.com/cchun/p/2520178.html
Copyright © 2011-2022 走看看