12pts求助(玄关)
查看原帖
12pts求助(玄关)
1199534
ycy1124楼主2024/6/25 09:17
#include<bits/stdc++.h>
using namespace std;
int f[451],ans[451];
int find(int x){
	if(f[x]!=x) x=find(f[x]);
	return x;
}
void hb(int x,int y){
	ans[find(y)]+=ans[find(x)];
	f[find(x)]=find(y);
	//printf("%d %d %d %d\n",x,y,ans[x],ans[y]);
}
int main(){
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&ans[i]);
		f[i]=i;
	}
	for(int i=1;i<=m;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		if(find(u)!=find(v)){
			hb(u,v);
		}
		else{
			continue;
		}
	}
	int js=-1;
	for(int i=1;i<=n;i++){
		js=max(js,ans[i]);
	}
	printf("%d",js);
	return 0;
}
2024/6/25 09:17
加载中...