30分求调
查看原帖
30分求调
847597
helongyun楼主2025/2/3 11:49
#include<bits/stdc++.h>
using namespace std;
int n,k,p,x,y,f[100005],ans;
map<int,map<int,int > > a;
int find(int x)
{
	if(x==f[x]) return x;
	else return f[x]=find(f[x]);
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		f[i]=i;
	}
	for(int i=1;i<=k;i++)
	{
		cin>>p>>x>>y;
		if(x>n||y>n)
		{
			ans++;
			continue;
		}
		if(x==y&&p==2)
		{
			ans++;
			continue;
		}
		if(find(x)==find(y)&&p==2)
		{
			ans++;
			continue;
		}
		if((a[x][y]==1||a[y][x]==1)&&p==1)
		{
			ans++;
			continue;
		}
		if(p==2&&a[y][x]==1)
		{
			ans++;
			continue;
		}
		if(p==1)
		{
			f[find(x)]=find(y);
		}
		if(p==2)
		{
			a[x][y]=1;
		}
	}
	cout<<ans;
}
2025/2/3 11:49
加载中...