求解比较时ans被赋予非return数值的值
查看原帖
求解比较时ans被赋予非return数值的值
1188358
Yosuga_sora楼主2024/3/16 09:44
#include <stdio.h>
#include <string.h>
#define min(a,b) (((a)<(b))?(a):(b))
int n,ans=99999999;
struct point{
	int father;
	int data;
	int lchild;
	int rchild;
}a[100010];
int check[100010]={0};
int bfs(int i,int dis){
	if(!i||check[i])return 0;
	check[i]=1;
	return bfs(a[i].father,dis+1)+bfs(a[i].lchild,dis+1)+bfs(a[i].rchild,dis+1)+a[i].data*dis;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&a[i].data,&a[i].lchild,&a[i].rchild);
	}
	for(int i=1;i<=n;i++){
		a[a[i].lchild].father=i;
		a[a[i].rchild].father=i;
	}
	for(int i=1;i<=n;i++){
		memset(check,0,sizeof(check));
		printf("%d\n",bfs(i,0));
		ans=min(ans,bfs(i,0));	
	}
	printf("%d",ans);
	return 0;
}
2024/3/16 09:44
加载中...