求助 P2024
  • 板块灌水区
  • 楼主a_little_carrot
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/6/19 21:26
  • 上次更新2024/6/20 11:16:18
查看原帖
求助 P2024
1042960
a_little_carrot楼主2024/6/19 21:26

30pts求助

Link

Code

#include<bits/stdc++.h>
using namespace std ;
int f[300005] ;
int n,k,ans ;
inline int read() {
	int x=0;char ch=getchar() ;
	while(ch<'0'||ch>'9') {ch=getchar();} ;
	while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();} ;
	return x ;
}
inline int find(int x) {
	if(f[x]==x) return x ;
	else return f[x]=find(f[x]) ;
}
int main() {
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) ;
	n=read();k=read() ;
	for(int i=1;i<=n*3;++i) {f[i]=i;}
	for(int l=1,o,x,y;l<=k;++l) {
		o=read();x=read();y=read() ;
		if(x>n||y>n) {ans++;continue;}
		if(o==1) {
			if(find(x)==find(y+n)||find(x+n)==find(y)) ans++ ;
			else {
				f[find(x)]=find(y) ;
				f[find(x+n)]=find(y+n) ;
				f[find(x+n+n)]=find(x+n+n) ;
			}
		}else {
			if(find(x)==find(y)||find(x)==find(y+n)) ans++ ;
			else {
				f[find(x+n)]=find(y) ;
				f[find(x+n+n)]=find(y+n) ;
				f[find(x)]=find(y+n+n) ;
			}
		}
	}
	cout<<ans ;
	return 0 ;
}

啊啊啊啊啊啊啊啊啊

2024/6/19 21:26
加载中...