比赛 20110722 评测结果 C
题目名称 网络探测 最终得分 0
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-07-22 11:17:34
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>

using namespace std;

struct node
{
	bool fl;
	int sum;
};

int n,m,t,a,b,c,mn;
node cp[1001][1001];

int main()
{
	int i,j,k=0;
	freopen("ping.in","r",stdin);
	freopen("ping.out","w",stdout);
	scanf("%d%d%d",&n,&m,&t);
	memset(cp,0,sizeof(cp));
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&a,&b,&c);
		cp[a][b].sum=c;
		cp[b][a].sum=c;
		cp[a][b].fl=true;
		cp[b][a].fl=true;
	}
	for(i=0;i<=n;i++)
		for(j=0;j<=n;j++)
			if(!cp[i][j].fl)
				cp[i][j].sum=0x7fffffff;
	for(k=0;k<=m;k++)
		for(i=0;i<=m;i++)
			for(j=0;j<=m;j++)
			{
				if(cp[i][k].fl&&cp[k][j].fl&&i!=j)
					if(cp[i][k].sum+cp[k][j].sum<cp[i][j].sum)
					{
						cp[i][j].sum=cp[i][k].sum+cp[k][j].sum;
						cp[i][j].fl=true;
						cp[j][i].fl=true;
					}
			}
	mn=cp[0][t].sum;
	if(mn==0x7fffffff)
	{
		printf("no\n");
		return 0;
	}
	printf("%d\n",mn);
	return 0;
}