贴上蒟蒻12pts代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[451],b[901],c[901],v[451]={},s[451][451]={},ans=-1;
void dfs(int x,int jiazhi){
v[x]=1;
bool f=true;
for(int i=1;i<=n;i++){
if(s[x][i]==1&&i!=x&&v[i]==0){
dfs(i,jiazhi+a[x]);
jiazhi-=a[i];
f=false;
}
}
if(f==true){
ans=max(ans,jiazhi+a[x]);
jiazhi=0;
return ;
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=m;i++){
scanf("%d%d",&b[i],&c[i]);
s[b[i]][c[i]]=1;
s[c[i]][b[i]]=1;
}
for(int i=1;i<=n;i++){
if(v[i]==0){
dfs(i,0);
}
}
printf("%d",ans);
return 0;
}