nyoj--115 城市平乱(最短路径)
2016-03-11 20:18
239 查看
题解
计算这n个点到Q的最短路径,取最小值。Floyd 会TLE.
没优化的Dijkstra。
#include <iostream> #include <cstdio> #include <vector> #include <cstring> #include <algorithm> using namespace std; const int maxn = 1005; const int inf = 100001; int g[maxn][maxn], a[maxn], d[maxn], v[maxn]; int n, m, p, q, t; int dijkstra(int s) { memset(v, 0, sizeof(v)); fill(d, d + maxn, inf); d[s] = 0; for(int i = 1; i <= m; ++i) { int x, Max = inf; for(int y = 1; y <= m; ++y) if(!v[y] && d[y] <= Max) Max = d[x = y]; v[x] = 1; for(int y = 1; y <= m; ++y) d[y] = min(d[y], d[x] + g[x][y]); } return d[q]; } int main() { //freopen("data.in", "r", stdin); for(cin >> t; t--; ) { cin >> n >> m >> p >> q; for(int i = 0; i <= m; ++i) fill(*(g + i), *(g + i) + maxn, inf); for(int i = 0; i < n; ++i) cin >> a[i]; int u, v, w; for(int i = 1; i <= p; ++i){ scanf("%d %d %d", &u, &v, &w); g[u][v] = g[v][u] = min(g[u][v], w); } int ans = inf; for(int i = 0; i < n; ++i) { ans = min(ans, dijkstra(a[i])); } cout << ans << endl; } return 0; }
相关文章推荐
- RM格式压缩电影软件 Easy RealMedia Producer Full V1.94 下载
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- 比较简单的jquery教程 Easy Ajax with jQuery 中文版全集第1/3页
- Easy RM RMVB to DVD Burner v1.3.8 汉化版 下载 附注册码
- Expandable "Detail" Table Rows
- linux下安装easy_install的方法
- 基于Java实现的Dijkstra算法示例
- 归纳整理文件Easy Duplicate Finder2.24 破解版
- DM*** and Easy *** Server with ISAKMP Profiles
- easy ***
- cisco packet tracer 5.3 实现基于3A的easy ***
- Dijkstra和floyd——求单源点最短路径
- [Leetcode题目]19. Remove Nth Node From End of List
- [Leetcode题目]21. Merge Two Sorted Lists
- [Leetcode题目]83. Remove Duplicates from Sorted List
- [Leetcode题目]160. Intersection of Two Linked Lists
- [Leetcode题目]203. Remove Linked List Elements
- [Leetcode题目]206. Reverse Linked List
- [Leetcode题目]234. Palindrome Linked List
- 初学图论-Kahn拓扑排序算法(Kahn's Topological Sort Algorithm)