求助!dfs代码模拟了一个小时没找出问题
查看原帖
求助!dfs代码模拟了一个小时没找出问题
386737
Mei_Misaki楼主2022/1/14 13:41
#include<iostream>  
#include<cstring>
using namespace std ; 
int n; 
int G[105][105]; 
int w[105];  
bool vis[105];
int ans=INT_MAX; 
int dfs(int x,int s){ 
	int sum=w[x]*s;  
	vis[x]=1; 
	for(int i=1;i<=n;i++)
		if(vis[i]==0 && G[x][i]==1) 
			sum+=dfs(i,s+1);
	return sum;
}
int main(){
	cin>>n; 
	for(int i=1;i<=n;i++){
		int weight,r,l; 
		cin>>weight>>r>>l;  
		w[i]=weight;
		if(r!=0)G[i][r]=G[r][i]=1; 
		if(l!=0)G[i][l]=G[l][i]=1; 
	}
	for(int i=1;i<=n;i++){ 
		memset(vis,sizeof(vis),0);
		ans=min(ans,dfs(i,0));  
	}
	cout<<ans<<endl;
	return 0;
}
2022/1/14 13:41
加载中...