比赛 动规 评测结果 AAAAA
题目名称 医院设置 最终得分 100
用户昵称 FFF团 运行时间 0.003 s
代码语言 C++ 内存使用 0.36 MiB
提交时间 2017-06-22 18:38:05
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,x,y,temp,ans=0x7fffffff;
int dp[105][105];
int num[105];
int main(){
	freopen("hospital.in","r",stdin);
	freopen("hospital.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	dp[i][j]=100000; 
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&num[i],&x,&y);
		if(x){
			dp[i][x]=1;
			dp[x][i]=1;
		}
		if(y){
			dp[i][y]=1;
			dp[y][i]=1;
		}
		dp[i][i]=0;
	}
	for(int k=1;k<=n;k++)
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
	for(int i=1;i<=n;i++){
		temp=0;
		for(int j=1;j<=n;j++){
			temp+=dp[i][j]*num[j];
		}
		ans=min(temp,ans);
	}
	printf("%d\n",ans);
	return 0;
}