湖南餐饮网站建设上海建站模板厂家
湖南餐饮网站建设,上海建站模板厂家,wordpress pdf 插件,wordpress 比分插件给定一个 n 个点 m 条边的有向图#xff0c;图中可能存在重边和自环#xff0c;所有边权均为非负值。
请你求出 1 号点到 n 号点的最短距离#xff0c;如果无法从 1 号点走到 n 号点#xff0c;则输出 −1 。
输入格式 第一行包含整数 n 和 m 。
接下来 m 行每行包含三个…给定一个 n 个点 m 条边的有向图图中可能存在重边和自环所有边权均为非负值。
请你求出 1 号点到 n 号点的最短距离如果无法从 1 号点走到 n 号点则输出 −1 。
输入格式 第一行包含整数 n 和 m 。
接下来 m 行每行包含三个整数 x,y,z 表示存在一条从点 x 到点 y 的有向边边长为 z 。
输出格式 输出一个整数表示 1 号点到 n 号点的最短距离。
如果路径不存在则输出 −1 。
数据范围 1≤n,m≤1.5×105 , 图中涉及边长均不小于 0 且不超过 10000 。 数据保证如果最短路存在则最短路的长度不超过 109 。
输入样例 3 3 1 2 2 2 3 1 1 3 4 输出样例 3
#include iostream
#include cstring
#include algorithm
#include queueusing namespace std;typedef pairint, int PII;
const int N 150010;
int n, m;
int h[N], e[N], ne[N], w[N], idx;
int dist[N];
int st[N];void add(int a, int b, int c)
{e[idx] b, w[idx] c, ne[idx] h[a], h[a] idx ;
}int dijkstra()
{memset(dist, 0x3f, sizeof dist);dist[1] 0;priority_queuePII, vectorPII, greaterPII heap;heap.push({0, 1});while(heap.size()){auto t heap.top();heap.pop();int ver t.second, distance t.first;if(st[ver]) continue;st[ver] true;for(int i h[ver]; i ! -1; i ne[i]){int j e[i];if(dist[j] distance w[i]){dist[j] distance w[i];heap.push({dist[j], j});}}}if(dist[n] 0x3f3f3f3f)return -1;return dist[n];
}int main ()
{scanf(%d%d, n, m);memset(h, -1, sizeof h);while(m -- ){int a, b, c;scanf(%d%d%d, a, b, c);add(a, b, c);}int t dijkstra();printf(%d\n, t);return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87318.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!