1003. Emergency<Dijstra><多条最短路径>
来源:互联网 发布:js混淆加密工具 下载 编辑:程序博客网 时间:2024/05/17 09:42
题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1003
参考他人代码。
这种Dijstra的实现,与之前的文章提到的Dijstra的实现不同(http://blog.csdn.net/staibin/article/details/20702925)。之前提到的是直接初始化起点,遍历n-1个节点。现在这种实现是遍历n个节点,所以过程上有些差异。
#include <stdio.h>#define SIZE500+5#define INF1<<30int n, m, s, e;int map[SIZE][SIZE];bool mark[SIZE];int dis[SIZE];// 必备int team[SIZE];int maxteam[SIZE];int pathcount[SIZE];// 题目需求void dij(){// 1. 寻找最近点// 2. 未找到或为终点,返回// 3. 把改点加入,处理与改点相连的点// 初始化pathcount[s] = 1;dis[s] = 0;maxteam[s] = team[s];int i, j;for(i=0; i<n; i++){int p, min = INF;for(j=0; j<n; j++){if(mark[j] == false && dis[j] < min){p=j;min=dis[j];}}// 寻找未被访问且距离最小的节点if(p == e || min == INF){return ;}// 到终点,或者没有所连的点mark[p] = true;for(j=0; j<n; j++){if(mark[j] == false){int discost = dis[p]+map[p][j];// 计算未访问节点距起点的距离if(discost < dis[j]){dis[j] = discost;pathcount[j] = pathcount[p];maxteam[j] = maxteam[p]+team[j];}else if(discost == dis[j])//以前有点可到达节点i{// pathcount[j]++;// 这样是错的,因为到p的路径可能不止一条pathcount[j] += pathcount[p];maxteam[j] = maxteam[j] > maxteam[p]+team[j] ? maxteam[j] : maxteam[p]+team[j];}// (a) new pathelse{// a longer path, doing nothing}}}}// 遍历n个节点return ;}void Init(){int i;for(i=0; i<n; i++){mark[i] = false;dis[i] = INF;team[i] = 0;pathcount[i] = 0;maxteam[i] = 0;for(int j=0; j<n; j++){map[i][j] = INF;}}return ;}int main(){#ifdef ONLINE_JUDGE#elsefreopen("E:\\in.txt", "r", stdin);#endifscanf("%d%d%d%d", &n, &m, &s, &e);Init();int i;for(i=0; i<n; i++){scanf("%d", &team[i]);}for(i=0; i<m; i++){int c1, c2, l;scanf("%d%d%d", &c1, &c2, &l);map[c1][c2] = map[c2][c1] = l;}dij();printf("%d %d\n", pathcount[e], maxteam[e]);return 0;}
0 0
- 1003. Emergency<Dijstra><多条最短路径>
- PAT (Advanced Level) Practise 1003. Emergency (25) Dijstra扩展应用
- PAT 1003. Emergency (25)(俩点间最短路径)
- 单源最短路径Dijstra算法
- dijstra最短路径
- dijstra+输出路径总结
- 最短路径问题-Dijstra
- 单源最短路径算法之dijstra
- 最短路径--Dijstra算法
- Dijstra算法 单源最短路径算法
- 1003. Emergency (25):简单最短路径问题
- PAT (Advanced Level) 1003. Emergency (25) 最短路径 DFS
- PAT 1003. Emergency (25)<最短路径,最大搜救人数>
- 1003.Emergency
- 1003. Emergency
- 1003. Emergency
- 1003. Emergency
- 1003. Emergency
- python小记2——大牛慎入——文…
- Python 文件操作函数
- python HTMLParser处理A标签…
- 【转载】python开发环境Eclipse+py…
- 召回率与准确率
- 1003. Emergency<Dijstra><多条最短路径>
- ACL-NLP顶级会议
- python中threading模块详解(一)
- python中关于时间和日期函数的常用…
- python 操作wmi例子
- jQuery的.live()和.die()
- KooBoo CMS 分页属性 参数列表
- 不用除法构造数组
- 第三周项目2-旱冰场造价