Dijkstra+Heap-HDU-4725-The Shortest Path in Nya Graph
来源:互联网 发布:剑网三长歌门捏脸数据 编辑:程序博客网 时间:2024/06/05 09:11
The Shortest Path in Nya Graph
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4297 Accepted Submission(s): 999
Problem Description
This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on.
The Nya graph is an undirected graph with “layers”. Each node in the graph belongs to a layer, there are N nodes in total.
You can move from any node in layer x to any node in layer x + 1, with cost C, since the roads are bi-directional, moving from layer x + 1 to layer x is also allowed with the same cost.
Besides, there are M extra edges, each connecting a pair of node u and v, with cost w.
Help us calculate the shortest path from node 1 to node N.
Input
The first line has a number T (T <= 20) , indicating the number of test cases.
For each test case, first line has three numbers N, M (0 <= N, M <= 105) and C(1 <= C <= 103), which is the number of nodes, the number of extra edges and cost of moving between adjacent layers.
The second line has N numbers li (1 <= li <= N), which is the layer of ith node belong to.
Then come N lines each with 3 numbers, u, v (1 <= u, v < =N, u <> v) and w (1 <= w <= 104), which means there is an extra edge, connecting a pair of node u and v, with cost w.
Output
For test case X, output “Case #X: ” first, then output the minimum cost moving from node 1 to node N.
If there are no solutions, output -1.
Sample Input
2
3 3 3
1 3 2
1 2 1
2 3 1
1 3 3
3 3 3
1 3 2
1 2 2
2 3 2
1 3 4
Sample Output
Case #1: 2
Case #2: 3
Source
2013 ACM/ICPC Asia Regional Online —— Warmup2
题意:有n个点,位于一些图层上,相邻图层上的点可以通过消耗c来互通,并且给m条额外的点与点间的边。现在求点1到点n的最短路。
//// main.cpp// HDU-4725-The Shortest Path in Nya Graph//// Created by 袁子涵 on 15/12/7.// Copyright © 2015年 袁子涵. All rights reserved.//// 936ms 26744KB#include <iostream>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <algorithm>#include <vector>#include <queue>#define INF 0x3f3f3f3f#define MAXN 200005#define LL long long intusing namespace std;int T;LL n,m,c;LL layer[MAXN];bool have[MAXN];struct qnode{ LL v,c; qnode(LL _v=0,LL _c=0):v(_v),c(_c){} bool operator <(const qnode &r)const { return c>r.c; }};struct Edge{ LL v,cost; Edge(LL _v=0,LL _cost=0):v(_v),cost(_cost){}};vector<Edge>E[MAXN];bool vis[MAXN];LL dist[MAXN];void Dijkstra(LL start){ memset(vis, 0, sizeof(vis)); for (LL i=1; i<=2*n; i++) { dist[i]=INF; } priority_queue<qnode>que; while (!que.empty()) { que.pop(); } dist[start]=0; que.push(qnode(start,0)); qnode tmp; while (!que.empty()) { tmp=que.top(); que.pop(); LL u=tmp.v; if (vis[u]) { continue; } vis[u]=1; for (LL i=0; i<E[u].size(); i++) { LL v=E[tmp.v][i].v; LL cost=E[u][i].cost; if (!vis[v]&&dist[v]>dist[u]+cost) { dist[v]=dist[u]+cost; que.push(qnode(v,dist[v])); } } }}void addedge(LL u,LL v,LL w){ E[u].push_back(Edge(v,w));}int main(int argc, const char * argv[]) { cin >> T; int t=0; LL a,b,w; while (t<T) { t++; cin >> n >> m >> c; memset(have, 0, sizeof(have)); for (LL i=1; i<=2*n; i++) { E[i].clear(); } for (LL i=1; i<=n; i++) { scanf("%lld",&layer[i]); have[layer[i]+n]=1; addedge(layer[i]+n, i, 0); if (layer[i]>1) { addedge(i, n+layer[i]-1, c); } if (layer[i]<n) { addedge(i, n+layer[i]+1, c); } } for (LL i=1+n; i<2*n; i++) { if (have[i] && have[i+1]) { addedge(i, i+1, c); addedge(i+1, i, c); } } for (LL i=1; i<=m; i++) { scanf("%lld%lld%lld",&a,&b,&w); addedge(a, b, w); addedge(b, a, w); } Dijkstra(1); printf("Case #%d: ",t); if (dist[n]==INF) { dist[n]=-1; } cout << dist[n] << endl; } return 0;}
- Dijkstra+Heap-HDU-4725-The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph dijkstra优化
- The Shortest Path in Nya Graph HDU
- The Shortest Path in Nya Graph HDU
- hdu 4725 The Shortest Path in Nya Graph dijkstra 求最短路
- hdu 4725 The Shortest Path in Nya Graph(dijkstra+优先队列)
- HDU 4725 The Shortest Path in Nya Graph(堆优化dijkstra)
- HDU 4725 The Shortest Path in Nya Graph——建图+dijkstra
- hdu 4725 The Shortest Path in Nya Graph
- HDU-4725-The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph
- hdu 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph priority_queue + spfa
- HDU 4725 The Shortest Path in Nya Graph
- hdu-4725-The Shortest Path in Nya Graph-层次网络
- 【HDU】4725 The Shortest Path in Nya Graph 最短路
- 【最短路】 HDU 4725 The Shortest Path in Nya Graph
- ScrollView的使用以及自动滚动
- php常用函数
- MetaWeblog Testing
- php综合
- Android学习笔记(1):一些准备姿势
- Dijkstra+Heap-HDU-4725-The Shortest Path in Nya Graph
- xml
- ajax
- URAL 1181 Cutting a Painted Polygon
- 欢迎使用CSDN-markdown编辑器
- # 变量和常量
- 基于C#实现的高斯正反算公式实现的国家大地2000坐标转换功能
- Ngnix 启动失败,提示端口被占用
- # Optional 可选值