UVa 10986 Sending email / 优先队列优化dijkstra
2013-12-11 09:26
218 查看
dijkstra 求最短路 邻接矩阵存不下 换成链表或者vector 用优先队列优化
另外据说spfa也可以 有空写一下
另外据说spfa也可以 有空写一下
#include <cstdio> #include <queue> #include <cstring> using namespace std; const int MAX = 20010; struct node { int end; int dis; bool friend operator < (node a,node b) { return a.dis > b.dis; } }; vector <node> a[MAX]; int dis[MAX]; bool vis[MAX]; int n,m,s,e; void dijkstra() { memset(vis,false,sizeof(vis)); priority_queue <node> q; int i,j; for(i = 0; i < n; i++) dis[i] = 999999999; dis[s] = 0; node no; no.end = s; no.dis = 0; q.push(no); while(!q.empty()) { node u = q.top(); q.pop(); int x = u.end; if(vis[x]) continue; vis[x] = true; int len = a[x].size(); for(int i = 0; i < len; i++) { node t = a[x][i]; if(dis[t.end] > u.dis + t.dis) { dis[t.end] = u.dis + t.dis; t.dis = dis[t.end]; q.push(t); } } } } int main() { int t,i,j; int x,y,z; int cas = 1; scanf("%d",&t); while(t--) { scanf("%d %d %d %d",&n,&m,&s,&e); for(i = 0; i < n; i++) a[i].clear(); while(m--) { //node no; scanf("%d %d %d",&x,&y,&z); //no.end = y; //no.dis = z; a[x].push_back((node){y,z}); //no.end = x; a[y].push_back((node){x,z}); } dijkstra(); if(dis[e] != 999999999) printf("Case #%d: %d\n",cas++,dis[e]); else printf("Case #%d: unreachable\n",cas++); } return 0; }
相关文章推荐
- UVa 10986 Sending email 优先队列优化的dijkstra 和 朴素dijkstra 效率对比
- UVA 10986 Sending email 【dijkstra + 堆优化】
- Sending email - dijkstra无向图 + 优先队列
- uva 11374 最短路+记录路径 好题 dijkstra优先队列优化算法 邻接表法 可做模板 G++提交
- UVa 658 It's not a Bug, it's a Feature! 位运算技巧+dijkstra优先队列优化
- UVa 10986 Sending email (最短路+Dijkstra队列优化)
- Dijkstra优先队列优化
- POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)
- POJ1724 ROADS(深搜DFS,最短路,dijkstra,用优先队列优化)
- Dijkstra普通算法及优先队列优化
- UVA 11374 Airport Express(优先队列优化dijstra + 枚举)
- uva658 - It's not a Bug, it's a Feature! 状态压缩+隐式图搜索+优先队列的dijkstra
- poj 2387(Dijkstra优先队列优化)
- 优先队列优化Dijkstra-hdu2066
- [codevs1021] 玛丽卡 优先队列优化dijkstra
- UVa 10986 - Sending email (Dijkstra优化, SPFA)
- UVA 10986 - Sending email
- UVA 10986 Sending email SPFA
- uva 10986(dijkstra+堆优化)
- hdu1874(dijkstra解法优先队列优化)