比赛 20121107 评测结果 AAAAA
题目名称 最难的任务 最终得分 100
用户昵称 KZNS 运行时间 0.071 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2014-09-20 20:32:38
显示代码纯文本
#include<fstream>
#include<vector>
#include<deque>
using namespace std;
int main()
{
	ifstream fi("hardest.in");
	ofstream fo("hardest.out");
	int t;
	fi>>t;
	for(;t>0;t--)
	{
		bool f[202]={0};
		vector<short int>r[202],q[202];
		deque<int>d;
		int n,m,a,b,c,end[202]={0};
		fi>>n>>m;
		for(int i=1;i<=n;i++)
		{
			r[i].push_back(0);
			q[i].push_back(0);
			end[i]=99999999;
		}
		for(int i=1;i<=m;i++)
		{
			fi>>a>>b>>c;
			r[a].push_back(b);
			q[a].push_back(c);
			r[b].push_back(a);
			q[b].push_back(c);
			r[a][0]++;
			r[b][0]++;
		}
		d.push_back(1);
		f[1]=1;
		end[1]=0;
		while(!d.empty())
		{
			int t=d.front();
			d.pop_front();
			f[t]=0;
			for(int i=1;i<=r[t][0];i++)
			{
				if(end[t]+q[t][i]<end[r[t][i]])
				{
					end[r[t][i]]=end[t]+q[t][i];
					if(!f[r[t][i]])
					{
						d.push_back(r[t][i]);
						f[r[t][i]]=1;
					}
				}
			}
		}
		if(end[n]!=99999999)
			fo<<end[n]<<endl;
		else
			fo<<-1<<endl;
	}
	return 0;
}