HDU 1009 The Shortest Path in Nya Graph
来源:互联网 发布:js发送http请求 cookie 编辑:程序博客网 时间:2024/06/05 07:35
迪杰斯特拉 + 优先队列
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #include <queue> 7 #include <vector> 8 9 #define LL __int64 10 11 const LL INF = 2000000000; 12 13 using namespace std; 14 15 LL dis[300100]; 16 17 int head[300100]; 18 19 struct E 20 { 21 int u,v,w,next; 22 }edge[1001000]; 23 24 int top; 25 26 void link(int u,int v,int w) 27 { 28 edge[top].u = u; 29 edge[top].v = v; 30 edge[top].w = w; 31 edge[top].next = head[u]; 32 head[u] = top++; 33 } 34 35 struct HeapNode 36 { 37 int d,u; 38 bool operator < (const HeapNode& rhs) const{ 39 return d>rhs.d; 40 } 41 }; 42 43 void dij(int st,int n) 44 { 45 priority_queue<HeapNode> q; 46 47 HeapNode p; 48 49 p.d = 0; 50 p.u = 1; 51 52 q.push(p); 53 54 while(q.empty() == false) 55 { 56 HeapNode x = q.top(); 57 q.pop(); 58 59 int u = x.u; 60 61 st = head[u]; 62 63 while(st != -1) 64 { 65 if(dis[u] + edge[st].w < dis[edge[st].v]) 66 { 67 dis[edge[st].v] = edge[st].w + dis[u]; 68 69 HeapNode temp; 70 71 temp.d = dis[edge[st].v]; 72 temp.u = edge[st].v; 73 q.push(temp); 74 } 75 st = edge[st].next; 76 77 } 78 } 79 80 if(dis[n] == INF) 81 cout<<"-1"<<endl; 82 else 83 cout<<dis[n]<<endl; 84 } 85 86 int main() 87 { 88 int i,n,m,c,u,v,w; 89 int T,icase = 0; 90 91 cin>>T; 92 while(T--) 93 { 94 scanf("%d %d %d",&n,&m,&c); 95 96 memset(head,-1,(n*3+2)*sizeof(int)); 97 98 top = 0; 99 100 for(i = 1;i <= n; ++i)101 {102 scanf("%d",&u);103 104 link(n+2*u-1,i,0);105 link(i,n+u*2,0);106 }107 108 for(i = 1;i < n; ++i)109 {110 link(n+i*2+2,n+i*2-1,c);111 link(n+i*2,n+i*2+1,c);112 }113 114 for(i = 1;i <= m; ++i)115 {116 scanf("%d %d %d",&u,&v,&w);117 link(u,v,w);118 link(v,u,w);119 }120 121 for(i = 1,n *= 3;i <= n; ++i)122 {123 dis[i] = INF;124 }125 126 dis[1] = 0;127 128 printf("Case #%d: ",++icase);129 dij(1,n/3);130 131 }132 return 0;133 }
墨迹了一下午 效率低了一13
- The Shortest Path in Nya Graph HDU
- The Shortest Path in Nya Graph HDU
- HDU 1009 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
- HDU 4725 The Shortest Path in Nya Graph
- hdu 4725 The Shortest Path in Nya Graph
- HDU 4725 The Shortest Path in Nya Graph priority_queue + 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 最短路
- 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 最短路
- HDU 4725 The Shortest Path in Nya Graph
- POJ 3252 Round Numbers
- POJ 1850 Code
- gcc链接,去掉不用的函数和data
- POJ 1942 Paths on a Grid 组合数的优化
- Documentation-filesystems/sysfs
- HDU 1009 The Shortest Path in Nya Graph
- HDU 4714 Tree2Cycle
- Nginx的基本操作
- 随机抽样一致性算法(RANSAC)
- iOS百度地图——用户当前位置
- Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- MTK6589编译出错
- 基于App developer的开发
- Documentation_driver-model_bus.txt