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