51nod 1459 迷宫游戏
来源:互联网 发布:itunes12怎么下载软件 编辑:程序博客网 时间:2024/05/15 15:30
加一个数组记录得分
#include <cstdio>#include <cstring>#include <set>#include <algorithm>using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 510;int G[MAXN][MAXN];int Score[MAXN];int Dist[MAXN];bool Vis[MAXN];int Res[MAXN];int n,m,s,e;void Dijkstra(){ for(int i = 0; i <= n; ++i) { Vis[i] = false; Dist[i] = INF; } Dist[s] = 0; Res[s] = Score[s]; int loop = n; int minn; int u; while(loop--) { minn = INF; for(int i = 0; i < n; ++i) if(!Vis[i] && Dist[i] < minn) minn = Dist[i],u = i; Vis[u] = true; for(int i = 0; i < n; ++i) { if(!Vis[i] && Dist[i] > Dist[u]+G[u][i]) { Res[i] = Res[u]+Score[i]; Dist[i] = Dist[u] + G[u][i]; } else if(!Vis[i] && Dist[i] == Dist[u]+G[u][i]) Res[i] = max(Res[i],Res[u]+Score[i]); } }}int main(){ int a,b,c; scanf("%d %d %d %d",&n,&m,&s,&e); for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) if(i == j) G[i][j] = 0; else G[i][j] = INF; for(int i = 0; i < n; ++i) scanf("%d",&Score[i]); for(int i = 0; i < m; ++i) { scanf("%d %d %d",&a,&b,&c); G[a][b] = G[b][a] = c; } if(s == e) { printf("%d %d\n",0,Score[s]); return 0; } Dijkstra(); printf("%d %d\n",Dist[e],Res[e]); return 0;}
阅读全文
0 0
- 51NOD 1459 迷宫游戏
- 51Nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51Nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51Nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 51nod 1459 迷宫游戏
- 1459 迷宫游戏(51NOD)
- 51Nod 1459:迷宫游戏
- 51NOD-1459 迷宫游戏
- 51NOD 1459迷宫游戏
- 51nod 1459 迷宫游戏
- 51 nod: 1459 迷宫游戏
- spark根据key输出到多个目录
- AndroidSudio打开工程报错: could not reserve enough space for object heap
- yolov2-cpu检测90ms每帧之tinier模型(3.5M)应用
- 文章标题
- 谈谈ARC下的内存管理
- 51nod 1459 迷宫游戏
- java基础【03】 拷贝
- sql执行顺序
- mysql5.7 系统学习前沿
- 神经网络相关的术语
- EventBus使用
- OD调试器反调试自己编译的应用程序时找不到OEP
- Python1 安装和配置
- Sicily1209. Sequence Sum Possibi题解