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