Advertisement

1346:【例4-7】亲戚(relation)

阅读量:

例4-7

复制代码
 //示例代码  会超时

    
 #include <iostream>
    
 using namespace std;
    
 int f[20005];
    
 int find(int x){//查找x所在的集合
    
 	if(f[x]==x) return x;//如果x自己就是一个集合的根节点,则返回x
    
 	return f[x]=find(f[x]);//否则递归查找x的祖先节点
    
 }
    
 void unionn(int x,int y){//将x和y所在的集合合并
    
 	f[find(x)]=find(y);
    
 }
    
 int main()
    
 {
    
 	int n,m,q,a,b;
    
 	cin>>n>>m;
    
 	for(int i=1;i<=n;i++) f[i]=i;//初始化每个人为一个单独的集合
    
 	for(int i=1;i<=m;i++){ //处理已知亲戚关系
    
 		cin>>a>>b;unionn(a,b);
    
 	}
    
 	cin>>q;
    
 	for(int i=1;i<=q;i++){//查询每一对可能的亲戚
    
 		cin>>a>>b;
    
 		if(

全部评论 (0)

还没有任何评论哟~