并查集100分求助(WA#12)
查看原帖
并查集100分求助(WA#12)
655791
erok楼主2023/2/11 21:00

#include<bits/stdc++.h>
#define int long long
#define O() puts("")
#define o() printf(" ")
#define in(x) scanf("%lld",&x)
#define out(x) printf("%lld ",x)
#define OUT(x) printf("%lld\n",x)
#define fr(x,y,z) for(int x=y;x<=z;x++)
#define rf(x,y,z) for(int x=y;x>=z;x--)
using namespace std;
const int maxn=1e6+10;

int n;
int a,b;
bool vis[maxn];
struct Disjoint_set_data_structure {
	int fa[maxn];
	void init(int Max) {
		fr(i,1,Max) fa[i]=i;
	}
	int find(int x) {
		return x==fa[x] ? x : fa[x]=find(fa[x]);
	}
	void merge(int x,int y) {
		int f1=find(x),f2=find(y);
		if(f1==f2) vis[f1]=true;
		else {
			if(f1<f2) swap(f1,f2);
			vis[f2]=true;
			fa[f2]=f1;
		}
	}
} ds;
signed main() {
//	freopen("","r",stdin);
//  freopen("","w",stdout);
	memset(vis,false,sizeof(vis));
	in(n);
	ds.init(n+1);
	fr(i,1,n) {
		in(a),in(b);
		ds.merge(a,b);
	}
	fr(i,1,n+1) {
		if(!vis[i]) {
			OUT(i-1ll);
			break;
		}
	}
	return 0;
}

马蜂可能体现了生物基因多样性,多多包涵

2023/2/11 21:00
加载中...