并查集,60pts。WA on #3 #4 #5 #7
查看原帖
并查集,60pts。WA on #3 #4 #5 #7
658786
STUDENT00楼主2022/8/26 14:29

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,a[10010],x,y,fa[10010],sum[10010],maxs;
int find(int x){
	if(x==fa[x]) return x;
	return fa[x]=find(fa[x]);
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++) fa[i]=i;
	while(m--){
		scanf("%d%d",&x,&y);
		x=find(x);
		y=find(y);
		fa[y]=x;
	}
	for(int i=1;i<=n;i++) sum[find(i)]+=a[i];
	for(int i=1;i<=n;i++) maxs=max(maxs,sum[i]);
	printf("%d",maxs);
	return 0;
}
2022/8/26 14:29
加载中...