记录编号 49127 评测结果 AAAAA
题目名称 最难的任务 最终得分 100
用户昵称 Gravatarawai 是否通过 通过
代码语言 C++ 运行时间 0.080 s
提交时间 2012-11-07 13:05:10 内存使用 3.43 MiB
显示代码纯文本
#include<iostream>
#include<algorithm>
#include<fstream>
#include<queue>
#include<cstring>
using namespace std;
const int maxdata=0x7fffffff;
ifstream fin("hardest.in");
ofstream fout("hardest.out");
int g[201][201];
int n,m,v,e,w;
bool inq[201];
queue <int> q;
int d[201];
int T;
int main()
{
	fin>>T;
	while(T--)
	{
		fin>>n>>m;
		memset(g,127,sizeof(g));
		for(int i=0;i<m;i++)
		{
			fin>>v>>e>>w;
			g[v][e]=min(g[v][e],w);
			g[e][v]=min(g[e][v],w);
		}
		for(int i=1;i<=n;i++)
			d[i]=maxdata;
		d[1]=0;
		memset(inq,false,sizeof(inq));
		q.push(1);
		inq[1]=true;
		while(!q.empty())
		{
			int x=q.front();q.pop();
			inq[x]=false;
			for(int i=1;i<=n;i++)
			{
				if(g[x][i]!=2139062143)
				{
					int xx=i;
					//fout<<d[xx]<<" "<<d[x]<<" "<<g[x][i]<<endl;
					if(d[x]<maxdata&&d[xx]>d[x]+g[x][i])
					{
						d[xx]=d[x]+g[x][i];
						if(!inq[xx])
						{
							inq[xx]=true;
							q.push(xx);
						}
					}
				}
			}
		}
		if(d[n]!=maxdata)
		fout<<d[n]<<endl;
		else fout<<"-1"<<endl;
	}
	return 0;
}