HDU 4725 The Shortest Path in Nya Graph(图论+最短路)
来源:互联网 发布:java开发短信平台 编辑:程序博客网 时间:2024/05/16 00:49
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725
思路:每一层建一个汇点,汇点连向所有点,然后所有点连向相邻层的汇点,然后图建好后进行dijkstra即可
代码:
#include <stdio.h>#include <string.h>#include <algorithm>#include <queue>#include <vector>using namespace std;#define INF 0x3f3f3f3fconst int EdgeM = 100005 * 10;const int PointN = 100005 * 3;typedef pair<int, int>pii;struct Edge { int u, v, next; int value; Edge() {} Edge(int u, int v, int value) {this->u = u;this->v = v;this->value = value; }};struct Graph { int pn, En, first[PointN]; int a[PointN]; Edge E[EdgeM]; void init(int n) {pn = n; En = 0;memset(first, -1, sizeof(first)); } //加边,有向bo为0,无向为1 void add(Edge e, int bo) {E[En] = e;E[En].next = first[e.u];first[e.u] = En++;if (bo == 1) { swap(e.u, e.v); add(e, 0);} } //最短路,优先队列优化的dijkstra int dijkstra(int s, int e) {memset(a, INF, sizeof(a));priority_queue<pii, vector<pii>, greater<pii> > que;a[s] = 0;que.push(make_pair(a[s], s));while (!que.empty()) { pii tmp = que.top(); que.pop(); int u = tmp.second; for (int i = first[u]; i != -1; i = E[i].next) {int v = E[i].v, w = E[i].value;if (a[v] > a[u] + w) { a[v] = a[u] + w; que.push(make_pair(a[v], v));} }}if (a[e] == INF) return -1;else return a[e]; }} G;const int N = 100005 * 3;int t, n, m, c, d, vis[N];int main() { int cas = 0; scanf("%d", &t); while (t--) {memset(vis, 0, sizeof(vis));scanf("%d%d%d", &n, &m, &c);G.init(n);for (int i = 1; i <= n; i++) { scanf("%d", &d); vis[d] = 1; G.add(Edge(d + n, i, 0), 0); if (d > 1)G.add(Edge(i, d + n - 1, c), 0); if (d < n)G.add(Edge(i, d + n + 1, c), 0);}int u, v, w;while (m--) { scanf("%d%d%d", &u, &v, &w); G.add(Edge(u, v, w), 1);}for (int i = 2; i <= n; i++) { if (vis[i] && vis[i - 1]) {G.add(Edge(i + n, i - 1 + n, c), 1); }}printf("Case #%d: %d\n", ++cas, G.dijkstra(1, n)); } return 0;}
1 0
- 【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(图论+最短路)
- HDU 4725 The Shortest Path in Nya Graph(最短路 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(拆点+最短路)
- hdu 4725 The Shortest Path in Nya Graph(最短路)
- hdu 4725 The Shortest Path in Nya Graph(堆+dij,最短路,5级)
- HDU 4725 The Shortest Path in Nya Graph-【SPFA最短路】
- hdu 4725 The Shortest Path in Nya Graph dijkstra 求最短路
- HDU 4725-J - The Shortest Path in Nya Graph-增点建图-层次网络-最短路
- HDU 4725 The Shortest Path in Nya Graph [构造 + 最短路]
- hdu4725(The Shortest Path in Nya Graph)最短路
- 数据库查询语句面试
- Finally语句块的执行
- Java装饰模式
- Android图片压缩
- HDOJ 3398 String -- 组合 数学
- HDU 4725 The Shortest Path in Nya Graph(图论+最短路)
- Hibernate二级缓存问题
- Hadoop集群(第5期)_Hadoop安装配置
- Android平台向SD卡写文本文件
- 关于UITableView的Cell复用谈谈的一些心得
- fdsfdsfs
- LeetCode – Distinct Subsequences Total (Java)
- padding border margin综合示意图
- 人生中的第一篇博文来了!!!