不能理解,为什么wa了~o(╥﹏╥)o 求助大佬~
查看原帖
不能理解,为什么wa了~o(╥﹏╥)o 求助大佬~
782631
shengmin楼主2023/8/24 11:31

#include<bits/stdc++.h>
using namespace std;
int fa[5050];
int n,m;//n个关系,m个爹 

void init(){//初始化 
	for(int i=1;i<=n;i++){
		fa[i]=i;//自己认自己为爹 
	}
}
int find_fa(int x){//查找自己的祖宗(同类链) 
	if(fa[x]==x)return x;
	else return find_fa(fa[x]);
}

bool union_fa(int x,int y){//合并 
	x=find_fa(x); 
	y=find_fa(y);
	if(x!=y){fa[x]=y;return 1;}//祖宗不同,合并,并返回1 
	return 0; // 祖宗相同,不用合并,返回0
} 
int main(){ 
	//freopen("P2024_2.in","r",stdin);
	//freopen("P2024_2(1).out","w",stdout);
	cin>>n>>m; 
	init();//初始化 
	int a,b,c,s=0;//s计数  注意:s要清零!!! 
	//int a1[n+1],b1[n+1];
	for(int i=1;i<=m;i++){
		cin>>a>>b>>c;//攀关系(输入)
		if(b>n||c>n||(b==c&&a==2)){
			s++;
			continue;
		}
		if(a==1&&union_fa(b,c)==1){
			s++;
		} 
	}
	cout<<s; 
	return 0;
}
//思路: 
//101→1  同类   × 
//1→2    猎物   √ 
//2→3    猎物   √ 
//3→3    猎物   ×
//1→3    同类   ×  因为1的猎物是2,2的猎物是3,如果1和3是同类,那么1就是2的猎物,就不是2是1的猎物。所以1和3不是同类
//3→1    猎物   √
//5→5    同类  
2023/8/24 11:31
加载中...