比赛 20150714B 评测结果 AATTT
题目名称 最难的任务 最终得分 40
用户昵称 Saionji 运行时间 0.301 s
代码语言 C++ 内存使用 0.66 MiB
提交时间 2015-07-14 10:22:59
显示代码纯文本
#include <fstream>
#include <cstring>
#include <algorithm>

using namespace std;

#define Maxn 300

ifstream fin("hardest.in");
ofstream fout("hardest.out");

int n, m, i, j, k;
int a, b, c;
int map[Maxn][Maxn];

void search()
{
	memset(map,-1,sizeof(map));
	
	fin>>n>>m;
	
	for(a=1;a<=m;a++)
	{
		fin>>i>>j>>k;
		if(map[i][j]==-1||map[i][j]>k)
		{
			map[i][j]=map[j][i]=k;
		}
	}
	for(c=1;c<=n;c++)
    {
        for(a=1;a<=n;a++)
        {
            for(b=1;b<=n;b++)
            {
                if(a!=b && a!=c &&b!=c)
                {
                    if(map[a][c]!=-1 && map[c][b]!=-1)
                    {
						if(map[a][b]==-1 || map[a][b]>map[a][c]+map[c][b])
						{
                            map[a][b]=map[a][c]+map[c][b];
						}
					}
				}
			}
		}
	}
	if(n==1)
	{
		fout<<'0'<<endl;
	}
	else fout<<map[1][n]<<endl;
}
int main()
{
	int t, temp;
	
	fin>>t;
	
	for(temp=1;temp<=t;temp++)
	{
		search();
	}
	
	fin.close();
	fout.close();
	
	return 0;
}