记录编号 10008 评测结果 AAAAA
题目名称 医院设置 最终得分 100
用户昵称 GravatarCockRoachEr 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2009-04-23 19:58:41 内存使用 4.07 MiB
显示代码纯文本
#include<stdio.h>
#include<math.h>
#include<string.h>
	long i,j,k;
	long temp;
	long ans;
	long x,y;
	long v;
	long n,m;
	long b[1000]={0};
	long a[1000][1000];
int main (void)
{
	freopen("hospital.in","r",stdin);
	freopen("hospital.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<=n;i++)
	{
		for(j=0;j<=n;j++)
		{
			a[i][j]=-1;
		}
	}
	
	for(i=1;i<=n;++i)
	{
		scanf("%d %d %d\n",&v,&x,&y);
		a[i][x]=1;
		a[i][y]=1;
		a[x][i]=1;
		a[y][i]=1;
		b[i]=v;
	}
	for (i=1;i<=n;i++)
	{
		a[i][i]=0;
	}
	for (k=1;k<=n;k++)
	{
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=n;j++)
			{
				if ((a[i][k]!=-1)&&(a[k][j]!=-1))
				{
				if ((a[i][j]==-1)||(a[i][j]>a[i][k]+a[k][j]))
				{
					a[i][j]=a[i][k]+a[k][j];
				}
				}
			}
		}
	}
	ans=21400000;
	for(i=1;i<=n;i++)
	{
		temp =0;
		for(j=1;j<=n;j++)
		{
		temp+=a[i][j]*b[j];
		}
		if(temp<ans)
		{
			ans=temp;
		}
	}
	printf("%d",ans);
	
	return 0;
}