比赛 |
20110722 |
评测结果 |
AWAWWWAWWWWWWWWWA |
题目名称 |
网络探测 |
最终得分 |
23 |
用户昵称 |
belong.zmx |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-07-22 10:44:26 |
显示代码纯文本
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;
int n,m,t;
int s,e,l;
int i;
int a[1001][1001];
int f[1001];
void putin()
{
scanf("%d%d%d",&n,&m,&t);
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&s,&e,&l);
a[e][s]=l;
a[s][e]=l;
}
}
void spfa()
{
bool o[1001];
int i,hh;
int head,tail;
int q[10001];
for (i=1;i<=n;i++) f[i]=9999999;
f[0]=0;
head=1;
tail=1;
q[head]=0;
do
{
for (i=1;i<=n;i++)
{
if (a[q[head]][i]>0)
{
hh=a[q[head]][i]+f[q[head]];
if (hh<f[i])
{
if (o[i]==true)
{
f[i]=hh;
}
else
{
tail++;
q[tail]=i;
f[q[tail]]=hh;
o[i]=true;
}
}
}
}
o[q[head]]=false;
head++;
}while (head<=tail);
}
int main()
{
freopen("ping.in","r",stdin);
freopen("ping.out","w",stdout);
putin();
spfa();
printf("%d\n",f[t]);
}