UVA 10986Sending email 【dijkstra + 堆优化】
来源:互联网 发布:哈利波特魔杖淘宝 编辑:程序博客网 时间:2024/05/18 01:29
题目链接:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1927
题意:n个点m条边,求s到e的最短距离
代码:
#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#include<ctype.h>#include<algorithm>#include<vector>#include<string>#include<queue>#include<stack>#include<set>#include<map>#include<string.h>using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 1000010;struct qnode{ int v; int c; qnode(int _v = 0, int _c = 0) :v(_v), c(_c){} bool operator < (const qnode &r) const { return c > r.c; }};struct Edge{ int v, cost; Edge(int _v = 0, int _cost = 0) :v(_v), cost(_cost) {}};vector<Edge> E[MAXN];bool vis[MAXN];int dist[MAXN];void dijkstra(int n,int start,int ed){ memset(vis, false, sizeof(vis)); for (int i = 0; i < 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(); int u = tmp.v; if (vis[ed]) continue; if (vis[u]) continue; vis[u] = true; for (int i = 0; i < E[u].size(); i++) { int v = E[u][i].v; int 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(int u, int v, int w){ E[u].push_back(Edge(v, w));}int n, m, s, d;int a, b, c;int main(){ int t; int cases = 1; scanf("%d",&t); while (t--) { scanf("%d%d%d%d", &n, &m, &s, &d); for (int i = 0; i <= n; i++) E[i].clear(); while (m--) { scanf("%d%d%d", &a, &b, &c); addedge(a, b, c); addedge(b, a, c); } dijkstra(n, s, d); if (dist[d] == INF) printf("Case #%d: unreachable\n", cases++); else printf("Case #%d: %d\n", cases++, dist[d]); } return 0;}
0 0
- UVA 10986Sending email 【dijkstra + 堆优化】
- UVa 10986 - Sending email (Dijkstra优化, SPFA)
- UVa 10986 Sending email / 优先队列优化dijkstra
- Sending email - UVa 10986 Dijkstra+优先队列优化
- UVa 10986 Sending email (最短路+Dijkstra队列优化)
- uva 10986 - Sending email(最短路Dijkstra)
- uva 10986 Sending email (dijkstra)
- UVa 10986 Sending email 优先队列优化的dijkstra 和 朴素dijkstra 效率对比
- UVA - 10986 Sending email (Dijkstra邻接表+优先队列优化)
- uva 10986 - Sending email
- UVA 10986 - Sending email
- UVa:10986 Sending email
- UVA - 10986 Sending email
- UVa 10986 - Sending email
- UVa 10986 - Sending email
- UVA 10986 Sending email(SPFA)
- UVA 10986 Sending email SPFA
- UVA10986 - Sending email(Dijkstra)
- 对最终用户而言界面就是系统
- Shell脚本操作MySQL服务
- 新文章,初见CSDN
- 使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况
- java随机生成一个6位数
- UVA 10986Sending email 【dijkstra + 堆优化】
- 连载《一个程序猿的生命周期》-26.组建项目团队
- TCP三次握手及其背后的缺陷
- zoj3279 简单二分
- UIScrollView
- Codeforce round #315 A music
- initBinder,对日期修改
- Java Thread的interrupt详解
- 重写ListView的Adapter时,getView()方法没有执行的原因