比赛 动规 评测结果 AAAAA
题目名称 医院设置 最终得分 100
用户昵称 皓芷 运行时间 0.003 s
代码语言 C++ 内存使用 0.36 MiB
提交时间 2017-06-22 18:36:31
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#define mysister
using namespace std;
const int maxn=105;
int n,w[maxn],u,v,f[maxn][maxn],ans=0x7fffffff;
int main()
{
	freopen("hospital.in","r",stdin);
	freopen("hospital.out","w",stdout);
	scanf("%d",&n);
	memset(f,0x7f/2,sizeof(f));
	for(int i=1;i<=n;i++)
	{
	  scanf("%d%d%d",&w[i],&u,&v);f[i][i]=0;
	  if(u)f[i][u]=f[u][i]=1;
	  if(v)f[i][v]=f[v][i]=1;
	}
	for(int k=1;k<=n;k++)
	  for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		  f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
	for(int i=1;i<=n;i++)
	{
	  int sum=0;
	  for(int j=1;j<=n;j++)
	  	sum+=f[i][j]*w[j];
	  ans=min(sum,ans);
	}
	printf("%d",ans);
	return 0;
}