| 比赛 | 
    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;
}