uva10986(最短路径)
2014-11-07 20:22
155 查看
题目的意思就是
首先给出有几组测试样例
每组样例先是 给 n(点的个数 ),m(边的个数) ,s (起点),t (终点)..
然后是每条边 ,以及权值..
求最短路..
但是因为点的数量很多,要用优化的dijkstra + 优先队列.刘汝佳书里的模板差别只有这题是无向图.
首先给出有几组测试样例
每组样例先是 给 n(点的个数 ),m(边的个数) ,s (起点),t (终点)..
然后是每条边 ,以及权值..
求最短路..
但是因为点的数量很多,要用优化的dijkstra + 优先队列.刘汝佳书里的模板差别只有这题是无向图.
#include<stdio.h> #include<string.h> #include<queue> #include<vector> using std::make_pair; using namespace std; typedef pair<int ,int> pii; const int N = 400005; const int M = 400005; const int INF = 0x3f3f3f3f; int first ; int vis ; int u[M],v[M],w[M],nex[M]; int d ; int n,m,s,t; priority_queue<pii ,vector<pii> ,greater<pii> > q; void build() { scanf("%d%d%d%d",&n,&m,&s,&t) ; for (int i = 0 ;i < n ; i++) { first[i] = -1; } m *= 2; for (int e = 0 ; e < m ;e++) { scanf("%d%d%d",&u[e],&v[e],&w[e]); nex[e] = first[u[e]]; first[u[e]] = e; e++; v[e] = u[e - 1],u[e] = v[e - 1],w[e] = w[e - 1]; nex[e] = first[u[e]]; first[u[e]] = e; } } void dijkstra() { for (int i = 0 ; i < n ;i++) { d[i] = (i == s ? 0 : INF); } memset(vis , 0 ,sizeof(vis)); q.push(make_pair(d[s],s)); while(!q.empty()) { pii f = q.top(); q.pop(); int x = f.second; if(vis[x]) continue; vis[x] = 1; for (int e = first[x]; e != -1; e = nex[e]) { if(d[v[e]] > d[x] + w[e]) { d[v[e]] = d[x] + w[e]; q.push(make_pair(d[v[e]] , v[e])); } } } } int main () { int cas = 1; int tt; scanf("%d", &tt); while (tt--) { build(); dijkstra(); printf("Case #%d: ", cas++); if (d[t] == INF) printf("unreachable\n"); else printf("%d\n", d[t]); } return 0; }
相关文章推荐
- uva10986 堆优化单源最短路径(pas)
- uva 10986(最短路径)
- UVA 11883 Repairing a Road(最短路径+暴力枚举)
- POJ 2235 Frogger / UVA 534 Frogger /ZOJ 1942 Frogger(图论,最短路径)
- uva 563 Crimewave 最短路径
- uva 1416 Warfare And Logistics (最短路径树)
- POJ-2662-A Walk Through the Forest;UVA-10917 - Walk Through the Forest(最短路径)
- UVA - 216 Getting in Line (求最短路径)
- Uva 11090 最短路径
- uva 11374 Dijkstra (单源最短路径)
- uva 10099(最短路径)
- uva 558(最短路径)
- uva 10985(最短路径)
- UVa10246 - Asterix and Obelix(最短路径变形)
- uva117 最短路径
- uva 11478 最短路径问题(负环,差分约束系统)
- uva 10269(最短路径)
- Uva 429 Word Transformation ( 最短路径 )
- The Postal Worker Rings Once(UVA 117)最短路径—SPFA算法+邻接表
- POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)