51Nod 1459 迷宫游戏(Dijkstra)
来源:互联网 发布:安卓浏览器查看源码 编辑:程序博客网 时间:2024/05/16 18:52
题目链接
Dijkstra求最短路径,最短路径需要更新,时间直接累加
最短路径如果相同,比较时间
#include<iostream>#include<cstdio>#include<math.h>#include<cstring>#include<algorithm>#include<queue>#include<set>#include<vector>using namespace std;typedef pair<int,int> P;const int INF=1<<29;int time[1000]={0},grade[1000],fz[1000],v[1000]={0};int ma[501][501]={0};int n,m, start, end;void Dijkstra(int x){priority_queue<P, vector<P>, greater<P> > que;time[x]=0,grade[x]=fz[x];que.push({time[x],x});while(que.size()){P p=que.top();que.pop();int num=p.second;if(v[num]) continue;v[num]=1;for(int i=0;i<n;i++){if(ma[i][num]!=INF){if(time[i]>time[num]+ma[i][num]){ time[i]=time[num]+ma[i][num]; grade[i]=grade[num]+fz[i]; que.push({time[i],i});}else if(time[i]==time[num]+ma[i][num]){if(grade[i]<grade[num]+fz[i]) grade[i]=grade[num]+fz[i];}}}}}int main(){cin>>n>>m>>start>>end;for(int i=0;i<n;i++) cin>>fz[i];for(int i=0;i<n;i++){time[i]=INF;grade[i]=0;for(int j=0;j<n;j++) ma[i][j]=INF; }for(int i=0;i<m;i++){int a,b,c;cin>>a>>b>>c;ma[a][b]=ma[b][a]=c;}Dijkstra(start);cout<<time[end]<<" "<<grade[end];return 0;}
阅读全文
0 0
- 51Nod 1459 迷宫游戏 dijkstra拓展
- 51Nod 1459 迷宫游戏(dijkstra)
- 51Nod 1459 迷宫游戏 (dijkstra)
- 51nod--1459 迷宫游戏 (dijkstra)
- 51nod 1459 迷宫游戏Dijkstra变形
- 51nod 1459 迷宫游戏 dijkstra变形
- 51Nod - 1459 迷宫游戏 dijkstra拓展
- 51Nod 1459 迷宫游戏(Dijkstra)
- 51 Nod(1459 迷宫游戏)(dijkstra)
- 51nod 1459迷宫游戏 Dijkstra堆优化
- 51NOD 1459 迷宫游戏
- 51Nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51Nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 平时遇到的各种格式的文件及其打开方法
- 算法 第四版 2.3.8
- 设计模式之观察者模式
- 牛客网-剑指offer-05-用两个栈实现队列
- Java集合---ConcurrentHashMap原理分析
- 51Nod 1459 迷宫游戏(Dijkstra)
- HDU 1151 二分图的DAG最小路径覆盖 解题报告
- ajax中的async属性值之同步和异步及同步和异步区别
- 会服系统测试(未完)
- Rxjava Retrofix2 okhttp3网络框架自解
- ACM动态规划总结
- 高通android 7.0短信草稿保存流程
- [POJ](3070)Fibonacci ---矩阵快速幂与斐波那契
- Two Sum