比赛 20121107 评测结果 AAAAA
题目名称 最难的任务 最终得分 100
用户昵称 Makazeu 运行时间 0.833 s
代码语言 C++ 内存使用 2.13 MiB
提交时间 2012-11-07 10:09:26
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int MAXN=211;
const int INF=(~0u>>2)-4;
int F[MAXN][MAXN],N,M,T;

inline void clear()
{
	scanf("%d %d\n",&N,&M);
	for(int i=1;i<=N;i++)
		for(int j=1;j<=N;j++)
			if(i!=j) F[i][j]=INF;
	int x,y,z;
	for(int i=1;i<=M;i++)
	{
		scanf("%d %d %d\n",&x,&y,&z);
		if(z<F[x][y]) {F[x][y]=z,F[y][x]=z;}
	}
}

inline void floyd()
{
	for(int k=1;k<=N;k++)
		for(int i=1;i<=N;i++)
			for(int j=1;j<=N;j++)
				if(F[i][k]+F[k][j]<F[i][j])
					F[i][j]=F[i][k]+F[k][j];
	if(F[1][N]!=INF) printf("%d\n",F[1][N]);
	else printf("-1\n");
}

int main()
{
	freopen("hardest.in","r",stdin);
	freopen("hardest.out","w",stdout);
	scanf("%d\n",&T);
	for(int i=1;i<=T;i++)
	{
		clear();floyd();
	}
	return 0;
}