为什么第二个样例输出5200啊(玄关)
查看原帖
为什么第二个样例输出5200啊(玄关)
927875
whybecause楼主2023/12/15 22:38

贴上蒟蒻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){
//			cout<<jiazhi<<" "<<i<<"    ";
			dfs(i,jiazhi+a[x]);
			jiazhi-=a[i];
			f=false;
		}
	}
	if(f==true){
//		cout<<endl<<jiazhi<<"\n";
		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){
//			printf("\n");
			dfs(i,0);
		}
	}
	printf("%d",ans);
    return 0;
}
2023/12/15 22:38
加载中...