sort有问题,但不知道错哪
查看原帖
sort有问题,但不知道错哪
1272630
Norton_genitals楼主2025/1/20 09:10
#include<bits/stdc++.h>
using namespace std;
struct an{
	long long kin,a,b;
}aa[100005];
long long n,k,f[50005],c0,c1,c2,flag=0,ans=0,xb=0;
set<long long>my[50005];
long long findd(long long x){
	if(f[x]==x)return x;
	return f[x]=findd(f[x]);
}
void join(long long x2,long long y2){
	long long fx=findd(x2),fy=findd(y2);
	if(fx!=fy) f[fx]=fy;
}
bool cmp(an qq,an qqq){
	return qq.kin<qqq.kin;
}
int main(){
	cin>>n>>k;
	for(long long i=1;i<=n;i++)f[i]=i;
	for(long long i=1;i<=k;i++){
		cin>>c0>>c1>>c2;
		if(c1>n||c2>n||(c1==c2&&c0==2)){
			flag++;
			ans++;
		}
		else{
			aa[++xb].kin=c0;aa[xb].a=c1;aa[xb].b=c2;
		}
	}
	k-=flag;
	sort(aa+1,aa+k+1,cmp);
	for(long long i=1;i<=k;i++){
		if(aa[i].kin==1){
			join(aa[i].a,aa[i].b);
		}
		else{
			if(findd(aa[i].a)==findd(aa[i].b)||my[aa[i].a].find(aa[i].b)!=my[aa[i].a].end()){ans++;}
			else{my[aa[i].b].insert(aa[i].a);}
		}
	}
	cout<<ans;
	return 0;
}

调关

2025/1/20 09:10
加载中...