九度 OJ 1162 I Wanna Go Home
来源:互联网 发布:人工蜂群算法流程图 编辑:程序博客网 时间:2024/05/20 23:02
有一句话不是很懂,看了前辈的代码,学习了。
#include <stdio.h>#include <vector>using namespace std;struct E{ int nextNode; int cost;};vector<E> edge[601]; int dis[601];bool mark[601];int leader[601];int main(){ int n , m; while(scanf("%d",&n) != EOF && n != 0){ scanf("%d",&m); for(int i = 1 ; i <= n ; ++i){ edge[i].clear(); dis[i] = -1; mark[i] = false; } for(int i = 1 ; i <= m ; ++i){ int a , b , t; scanf("%d%d%d",&a,&b,&t); E tmp; tmp.nextNode = b; tmp.cost = t; edge[a].push_back(tmp); tmp.nextNode = a; edge[b].push_back(tmp); } for(int i = 1 ; i <= n ;++i){ scanf("%d",&leader[i]); } mark[1] = true; //Dijkstra dis[1] = 0; int newp = 1; for(int i = 1 ; i < n ; ++i){ for(int j = 0 ; j < edge[newp].size() ; ++j){ int t = edge[newp][j].nextNode; int c = edge[newp][j].cost; if(mark[t] == true) continue; if(c == -1) continue; if(leader[newp] == 2 && leader[t] == 1) continue; //跳过从2到1的路线 if(dis[t] == -1 || dis[t] > dis[newp] + c){ dis[t] = dis[newp]+c; } } int min = 501; for(int j = 1 ; j <= n ; ++j){ if(mark[j] == true) continue; if(dis[j] == -1) continue; if(dis[j] < min){ min = dis[j]; newp = j; } } mark[newp] = true; } printf("%d\n",dis[2]); } return 0;}
0 0
- 九度OJ 1162 I Wanna Go Home
- 九度OJ 题目1162:I Wanna Go Home
- 九度 OJ 1162 I Wanna Go Home
- 九度 oj 题目1162:I Wanna Go Home
- 九度OJ-1162:I Wanna Go Home
- 九度 OJ 1162 I Wanna Go Home 最短路问题
- 九度OJ 1162:I Wanna Go Home(我想回家) (最短路径)
- 九度:1162<I wanna go home><最短路径>
- 九度 题目1162:I Wanna Go Home
- 最短路径--九度1162.I Wanna Go Home
- I wanna go home
- 题目1162:I Wanna Go Home
- 题目1162:I Wanna Go Home
- 题目1162:I Wanna Go Home
- Jobdu 题目1162:I Wanna Go Home
- 题目1162:I Wanna Go Home
- 题目1162:I Wanna Go Home
- POJ3767----I Wanna Go Home
- 添加阴影
- javascript自定义事件应用实例
- Qt之QComboBox
- 创建HelloWorld项目
- 【IOS学习】NSString copy or not (strong)?
- 九度 OJ 1162 I Wanna Go Home
- 浅析MySQL中exists与in的使用
- POJ 2449 A*k短路
- JAVA基础6.45——继承概述(1)
- Android----给Ta惊喜,带音乐的动态相册
- 关于memset的注意事项
- Java类与对象(一)
- Java 求全排列的两种方式
- OTG线与普通USB线的区别