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