题目大意:

Input

第一行是一个整数T ( T ≤ 100 ),表示测试用例的个数。

每个测试用例的第一行是两个整数 n 和 m ( 1 ≤ n ≤ 200 , 0 ≤ m ≤ 10000 ),分别表示交汇点的个数以及路的条数。

接下来的m行都有3个整数 i, j, k,表示在城市i 和城市j 之间有一条长度为k的路。

假设交汇点从1到n编号。你的出发点是1,目的地是n。

道路都是双向的。

Output

每个测试用例输出一行,一个整数:逃跑的最短距离。如果无路可逃,输出-1。

Sample Input

1
2 1
1 2 3

Sample Output

3

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define P pair<int,int>
#define mp(i,j) make_pair(i,j)
using namespace std;
struct NODE { int to,co; };
int a[][];
int dis[],flag[];
int main()
{
int t;
while(~scanf("%d",&t)) {
while(t--) {
int n,m; scanf("%d%d",&n,&m);
memset(a,INF,sizeof(a));
while(m--) {
int u,v,w; scanf("%d%d%d",&u,&v,&w);
a[u][v]=a[v][u]=min(a[u][v],w);
}
memset(dis,INF,sizeof(dis));
memset(flag,,sizeof(flag));
queue <P> q;
q.push(mp(,)); dis[]=; flag[]=;
while(!q.empty()) {
P u=q.front(); q.pop();
flag[u.second]=; /// 出队 标为0
for(int i=;i<=n;i++) {
if(flag[i] || a[u.second][i]==INF)
continue; /// 已在队列内 或两点间不存在路径
if(dis[i]>u.first+a[u.second][i]) {
dis[i]=u.first+a[u.second][i];
flag[i]=; /// 入队 标为1
q.push(mp(dis[i],i));
} /// 更新最短路
}
}
if(dis[n]==INF) printf("-1\n");
else printf("%d\n",dis[n]);
}
} return ;
}

最难的工作 /// SPFA模板 oj1396的更多相关文章

  1. SPFA模板 Bellmanford优化版

    SPFA模板: queue<int>Q; ]; ],sumv[]; *],__next[*],e,w[*],first[],cnts[]; void AddEdge(int U,int V ...

  2. floyed dij spfa 模板

    /* SPFA模板 */ const int inf=0x3f3f3f3f; inline int SPFA(int s){ memset(dis,inf,sizeof(dis)); queue< ...

  3. spfa模板

    通过stl的queue实现的spfa(vector实现邻接表存图) 本模板没有考虑存在两点不连通的情况 如果需要判断则需要用到并查集或者遍历整个邻接表 #include<iostream> ...

  4. spfa(模板)

    spfa作为图论中的常用算法,深受各类出题人和各位OIer的喜爱: so,为了给大众创造福利,宝宝在此奉上spfa大发的思路和模板:以感谢社会, 感谢CCF,感谢CCTV, 感谢我的老师,感谢同学们, ...

  5. 最短路算法 -- SPFA模板

    一.算法步骤 建立一个队列,初始时队列里只有起始点,再建立一个数组记录起始点到所有点的最短路径(该数组的初始值要赋为极大值,该点到它本身的路径赋为0,下面的模板中该数组为dist[]).然后执行松弛操 ...

  6. hdu-2544-最短路(SPFA模板)

    题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...

  7. spfa模板+讲解

    zz http://blog.sina.com.cn/s/blog_6ad20aef0100mc1a.html Spfa算法 (模板源代码) 这是Bellman Ford的改进算法.    算法介绍: ...

  8. 图论--最短路--SPFA模板(能过题,真没错的模板)

    [ACM常用模板合集] #include<iostream> #include<queue> #include<algorithm> #include<set ...

  9. UVA 558 判定负环,spfa模板题

    1.UVA 558 Wormholes 2.总结:第一个spfa,好气的是用next[]数组判定Compilation error,改成nexte[]就过了..难道next还是特殊词吗 题意:科学家, ...

随机推荐

  1. Openstack Nova 源码分析 — Create instances (nova-conductor阶段)

    目录 目录 前言 Instance Flavor Instance Status Virt Driver Resource Tracker nova-conductor Create Instance ...

  2. topjui.core.js

    var defaultConfig = { pageLoadComplete: false, config: { ctx: "", mainPage: false, pkName: ...

  3. 基于Netty的RPC架构学习笔记(二):netty服务器

    文章目录 简介 Netty服务端Hello World案例 举个

  4. Java 网络编程(1):使用 NetworkInterface 获得本机在局域网内的 IP 地址

    原文地址:https://segmentfault.com/a/1190000007462741 1.问题提出 在使用 Java 开发网络程序时,有时候我们需要知道本机在局域网中的 IP 地址.很常见 ...

  5. jQuery 快捷操作

    快捷操作 1. class属性值操作 $().attr(‘class’,值); $().attr(‘class’); $().removeAttr(‘class’);  //删除class的所有属性 ...

  6. 如何用javascript高效的判断浏览器种类和版本

    <script type="text/javascript">        var Sys = {};        var ua = navigator.userA ...

  7. js用document.getElementById时要注意!

    <!DOCTYPE html> <html lang="en"> <head> <script src="http://code ...

  8. python下pip使用bug汇总

    PS:以下操作全部基于win10 64位操作系统 pip安装任何包都出现问题: Cannot unpack file /tmp/pip-KzJgHD-unpack/simple 报错: Cannot ...

  9. USACO06JAN The Cow Prom /// tarjan求强联通分量 oj24219

    题目大意: n个点 m条边的图 求大小大于1的强联通分量的个数 https://www.cnblogs.com/stxy-ferryman/p/7779347.html tarjan求完强联通分量并染 ...

  10. hadoop系列(一)window10下hadoop安装

    风闻win10不需要cygwin就能用hadoop了,赶紧试试. 去官网下载hadoop-2.8.3,然后去 https://github.com/steveloughran/winutils 下载h ...