Dijkstra队列优化矩阵版
2017-04-12 18:46
295 查看
#include <bits/stdc++.h> #define INF 0x3f3f3f3f //定义一个很大的数 using namespace std; const int maxn = 100 + 10; int vis[maxn]; int mp[maxn][maxn]; int v[maxn][maxn]; int dis[maxn]; int mon[maxn][maxn]; int val[maxn]; struct Node { int num; int val; // int sum; }node; priority_queue<Node> q; bool operator < (Node a,Node b) { if(a.val = b.val) return a.num > b.num; return a.val > b.val; } int main() { // freopen("in.txt","r",stdin); // int total; int n,m; while(cin>>n>>m) { while(!q.empty()) q.pop(); // memset(vis,0,sizeof(vis)); memset(mp,-1,sizeof(mp)); // memset(mon,INF,sizeof(mon)); // memset(v,0,sizeof(vis)); // memset(dis,0,sizeof(dis)); for(int i = 0; i < m; i++) { int t1,t2,c,v; cin>>t1>>t2>>c; mp[t1][t2]=c; mon[t1][t2]=v; // v[a][b] = d; } for(int i = 2; i <= n; i++) { dis[i] = INF; } //1是起始点 dis[1] = 0; node.num = 1; node.val = 0; // node.sum = 0; q.push(node); while(!q.empty()) { for(int i = 2; i <= n; i++) { if(mp[q.top().num][i] != -1&&dis[i] > dis[q.top().num]+mp[q.top().num][i]) { dis[i] = dis[q.top().num] + mp[q.top().num][i]; node.num = i; node.val = dis[i]; q.push(node); } } q.pop(); } for(int i = 1; i <= n; i++) { printf("初始点到%d点的距离为%d\n",i,dis[i]); } } return 0; }
相关文章推荐
- poj 1847 最短路 dijkstra模板(vector邻接表+队列优化)
- UVa 10986 Sending email / 优先队列优化dijkstra
- UVa 10986 Sending email 优先队列优化的dijkstra 和 朴素dijkstra 效率对比
- hdu 2112 HDU Today 优先队列优化的Dijkstra+map
- uva10986 优先队列优化的Dijkstra
- 优先队列优化 dijkstra
- hdu 2066最短路 dijkstra 及其优先队列优化
- dijkstra队列优化链式前向星(C++、Java)
- 【bzo1579】拆点+dijkstra优先队列优化+其他优化
- 模板:Dijkstra 队列优化
- POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)
- dijkstra的优先队列优化
- 刘汝佳 Dijkstra 队列优化
- Dijkstra优先队列优化
- AOJ 2249 Road Construction (dijkstra+队列优化)
- Dijkstra普通算法及优先队列优化
- 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain
- Dijkstra算法优先队列优化
- UVa 658 It's not a Bug, it's a Feature! 位运算技巧+dijkstra优先队列优化
- POJ1724 ROADS(深搜DFS,最短路,dijkstra,用优先队列优化)