记录编号 | 539913 | 评测结果 | AAAAA | ||
---|---|---|---|---|---|
题目名称 | 最难的任务 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.058 s | ||
提交时间 | 2019-08-11 20:09:16 | 内存使用 | 13.67 MiB | ||
#include<stdio.h> #include<cstring> #include<queue> #include<algorithm> using namespace std; inline int read(){ int x=0;char c=getchar(); while(c<'0')c=getchar(); while(c>='0')x=x*10+c-'0',c=getchar(); return x; } const int maxn=205; int n,m;vector<int>e[maxn],v[maxn]; queue<int>q;int dis[maxn],bein[maxn]; void SPFA(){ q.push(1);dis[1]=0; while(!q.empty()){ int x=q.front();bein[x]=false;q.pop(); for(int i=0;i<e[x].size();i++){ int to=e[x][i]; if(dis[to]>dis[x]+v[x][i]){ dis[to]=dis[x]+v[x][i]; if(!bein[to])bein[to]=true,q.push(to); } } } } int main(){ freopen("hardest.in","r",stdin);freopen("hardest.out","w",stdout); int t=read();while(t--){ memset(dis,0x3f,sizeof dis); memset(bein,0,sizeof bein); int n=read(),m=read(); for(int i=1;i<=n;i++)e[i].clear(),v[i].clear(); for(int i=0;i<m;i++){ int x=read(),y=read(),z=read(); e[x].push_back(y);v[x].push_back(z); e[y].push_back(x);v[y].push_back(z); } SPFA(); printf("%d\n",dis[n]==0x3f3f3f3f?-1:dis[n]); } return 0; }