UVA10986 - Sending email(Dijkstra)
来源:互联网 发布:搜索与回溯算法讲解 编辑:程序博客网 时间:2024/05/17 01:34
UVA10986 - Sending email(Dijkstra)
题目链接
题目大意:给n个点,m条边,还有起点和终点,问起点到终点的最短距离,不可达unreachable。
解题思路:最短路问题,dijkstra算法。
代码:
#include <cstdio>#include <queue>#include <vector>#include <string.h> using namespace std;using std::make_pair;typedef pair<int, int> pii;priority_queue<pii, vector<pii>, greater<pii> >q;const int INF = 0x3f3f3f3f;const int maxn = 2e4;const int maxm = 1e5 + 5;int first[maxn];int u[maxm], v[maxm], w[maxm], next[maxm];int d[maxn];void read_Graph (int n, int m) { for (int i = 0; i < n; i++) first[i] = -1; m *= 2; for (int i = 0; i < m; i++) { scanf ("%d%d%d", &u[i], &v[i], &w[i]); next[i] = first[u[i]]; first[u[i]] = i; i++; u[i] = v[i - 1]; v[i] = u[i - 1]; w[i] = w[i - 1]; next[i] = first[u[i]]; first[u[i]] = i; }}int Dijkstra (int s, int t, int n) { for (int i = 0; i < n; i++) d[i] = (i == s) ? 0 : INF; q.push(make_pair(d[s],s)); pii cur; while (!q.empty()) { cur = q.top(); q.pop(); if (cur.first != d[cur.second]) continue; for (int i = first[cur.second]; i != -1; i = next[i]) if (d[v[i]] > d[u[i]] + w[i]) { d[v[i]] = d[u[i]] + w[i]; q.push(make_pair(d[v[i]], v[i])); } } return d[t];}int main () { int T; scanf ("%d", &T); int n, m, s, t, cas = 0; while (T--) { scanf ("%d%d%d%d", &n, &m, &s, &t); read_Graph(n, m); int ans = Dijkstra(s, t, n); if (ans == INF) printf ("Case #%d: unreachable\n", ++cas); else printf ("Case #%d: %d\n", ++cas, ans); } return 0;}
0 0
- UVA10986 - Sending email(Dijkstra)
- Uva10986-Sending email
- UVa10986 Sending email(spfa)
- UVa 10986 - Sending email (Dijkstra优化, SPFA)
- uva 10986 - Sending email(最短路Dijkstra)
- uva 10986 Sending email (dijkstra)
- UVA 10986Sending email 【dijkstra + 堆优化】
- UVa 10986 Sending email / 优先队列优化dijkstra
- Sending email - dijkstra无向图 + 优先队列
- Sending email - UVa 10986 Dijkstra+优先队列优化
- UVa 10986 Sending email (最短路+Dijkstra队列优化)
- UVa 10986 Sending email 优先队列优化的dijkstra 和 朴素dijkstra 效率对比
- uva10986 优先队列优化的Dijkstra
- UVA10986
- UVA10986
- UVA - 10986 Sending email (Dijkstra邻接表+优先队列优化)
- 10986 - Sending email
- UVaOJ 10986 - Sending email
- LeetCode Binary Tree Inorder Traversal
- 迅捷word转换成pdf转换器最新版
- mysql性能优化-慢查询分析、优化索引和配置
- 拷贝构造函数
- LINUX 函数级热补丁技术、inline hook(待完善)
- UVA10986 - Sending email(Dijkstra)
- 浅谈Exchange会议室应用现状分析
- 数据挖掘标准 CRISP-DM 学习
- Java OCR tesseract 图像智能字符识别技术(一)
- ubuntu下的JDK环境配置
- 查看mysql正在执行的SQL语句
- TCP连接的三次握手,四次挥手
- 工作中用到的技巧(不断补充中)
- Linux 文件夹和文件大小排序