I wanna go home
来源:互联网 发布:win8.1装ubuntu双系统 编辑:程序博客网 时间:2024/05/22 05:20
题目网址:I wanna go home
题目大意:给出n个城市 ,给出m对城市之间的距离,再给出每一个城市的所属的阵营,要求求出从城市1到城市2的最小的路径长度,城市1总是属于阵营1的,城市2是属于阵营2的。这条路径上最多只有一次从不同阵营穿过的路径,其实城市1属于阵营1,所有我采用的是把所有阵营2到阵营1的城市的路径长度修改成0,那么我在进行更新的时候,只需要判断当前的cost是否为0,如果是的话,那么我就把continue就行。
#include<iostream>#include<vector>using namespace std;struct node{int next;int c;};vector<node> edge[602];int dist[602];bool mark[602];int own[602];int main(){int n, m;while (cin >> n&&n){cin >> m;for (int i = 1; i <= n; i++){edge[i].clear();dist[i] = -1;mark[i] = false;}for (int i = 1; i <= m; i++){node tmp;int s, t, c;cin >> s >> t >> c;tmp.next = t;tmp.c = c;edge[s].push_back(tmp);tmp.next = s;edge[t].push_back(tmp);}for (int i = 1; i <= n; i++){cin >> own[i];}for (int i = 1; i <= n; i++){if (own[i] == 2){for (int j = 0; j < edge[i].size(); j++){if (own[edge[i][j].next] == 1)edge[i][j].c = 0;}}}int newop = 1;dist[newop] = 0;mark[newop] = true;for (int i = 1; i < n; i++){for (int j = 0; j < edge[newop].size(); j++){int t = edge[newop][j].next;int c = edge[newop][j].c;if (mark[t])continue;if (c == 0)//这里如果少了会出错第三个案例会出现错误的答案continue;//阵营2到阵营1的路径设为不可到达,我在这是把边权值设为0办法,求最短路时判0跳过。if (dist[t] == -1 || dist[t] > dist[newop] + c)dist[t] = dist[newop] + c;}int min = 123123123;for (int j = 1; j <= n; j++){if (mark[j])continue;if (dist[j] == -1)continue;if (dist[j] < min){min = dist[j];newop = j;}}mark[newop] = true;}cout << dist[2] << endl;}return 0;}/**************************************************************Problem: 1162User: hellosyqqLanguage: C++Result: AcceptedTime:20 msMemory:1672 kb****************************************************************/
阅读全文
0 0
- I wanna go home
- POJ3767----I Wanna Go Home
- POJ 3767 I Wanna Go Home
- poj_3767——I Wanna Go Home
- POJ 3767 I Wanna Go Home
- poj 3767 I Wanna Go Home
- poj 3767 I Wanna Go Home
- 题目1162:I Wanna Go Home
- 题目1162:I Wanna Go Home
- 题目1162:I Wanna Go Home
- POJ 3767 I Wanna Go Home
- poj 3767 I Wanna Go Home
- POJ3767 I Wanna Go Home dijkstra
- Jobdu 题目1162:I Wanna Go Home
- POJ 3767 I Wanna Go Home
- I wanna go home(最短路)
- POJ 3767 I Wanna Go Home(Dijkstra)
- POJ - 3767 - I Wanna Go Home
- 关于调用存储过程-事务使用
- 闭包
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- 跳板机
- Python 变量类型
- I wanna go home
- oracle插入值太大,超过限制数的处理ORA-12899,ora-01489
- Jquery上传图片至服务器
- Windows基础排查之一
- Android设计模式-单例模式(Singleton)
- Pentaho PDI 数据导入关于时间格式及重复数据处理这2个问题的解决方法
- JUnit 中是以测试方法为一个独立的生命周期
- leetcode 234. Palindrome Linked List 回文链表的判断
- 第三章--执行计划