HDU 1009 The Shortest Path in Nya Graph
2013-09-12 20:26
239 查看
迪杰斯特拉 + 优先队列
View Code
墨迹了一下午 效率低了一13
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <vector> #define LL __int64 const LL INF = 2000000000; using namespace std; LL dis[300100]; int head[300100]; struct E { int u,v,w,next; }edge[1001000]; int top; void link(int u,int v,int w) { edge[top].u = u; edge[top].v = v; edge[top].w = w; edge[top].next = head[u]; head[u] = top++; } struct HeapNode { int d,u; bool operator < (const HeapNode& rhs) const{ return d>rhs.d; } }; void dij(int st,int n) { priority_queue<HeapNode> q; HeapNode p; p.d = 0; p.u = 1; q.push(p); while(q.empty() == false) { HeapNode x = q.top(); q.pop(); int u = x.u; st = head[u]; while(st != -1) { if(dis[u] + edge[st].w < dis[edge[st].v]) { dis[edge[st].v] = edge[st].w + dis[u]; HeapNode temp; temp.d = dis[edge[st].v]; temp.u = edge[st].v; q.push(temp); } st = edge[st].next; } } if(dis == INF) cout<<"-1"<<endl; else cout<<dis <<endl; } int main() { int i,n,m,c,u,v,w; int T,icase = 0; cin>>T; while(T--) { scanf("%d %d %d",&n,&m,&c); memset(head,-1,(n*3+2)*sizeof(int)); top = 0; for(i = 1;i <= n; ++i) { scanf("%d",&u); link(n+2*u-1,i,0); link(i,n+u*2,0); } for(i = 1;i < n; ++i) { link(n+i*2+2,n+i*2-1,c); link(n+i*2,n+i*2+1,c); } for(i = 1;i <= m; ++i) { scanf("%d %d %d",&u,&v,&w); link(u,v,w); link(v,u,w); } for(i = 1,n *= 3;i <= n; ++i) { dis[i] = INF; } dis[1] = 0; printf("Case #%d: ",++icase); dij(1,n/3); } return 0; }
View Code
墨迹了一下午 效率低了一13
相关文章推荐
- HDU 1009 The Shortest Path in Nya Graph
- [HDU 4725]The Shortest Path in Nya Graph[建图]
- hdu The Shortest Path in Nya Graph(建图+spfa)
- HDU 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph(图论+最短路)
- hdu 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——建图+dijkstra
- (中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
- 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 建图加SPFA
- HDU 4725 The Shortest Path in Nya Graph(优先队列+dijkstra)
- hdu 4725 The Shortest Path in Nya Graph
- 【HDU】4725 The Shortest Path in Nya Graph 最短路
- The Shortest Path in Nya Graph HDU - 4725
- hdu 4725 The Shortest Path in Nya Graph //spfa