记录编号 |
539913 |
评测结果 |
AAAAA |
题目名称 |
最难的任务 |
最终得分 |
100 |
用户昵称 |
WxjianF019 |
是否通过 |
通过 |
代码语言 |
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;
}