N - Tram POJ - 1847

题意: 从一个点出发,可以到达若干个点,到第一个点的边权为0,到其他点的边权为1,到不了为 inf ,求从起点到终点的最短路。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
const int maxn = 110;
const int inf = 0x3f3f3f3f;
int N, A, B;int head[maxn], cnt, dis[maxn];
bool vis[maxn];struct edge{int to, next, w;
}e[maxn*maxn];void add(int u, int v, int w) {   e[++cnt].next = head[u];e[cnt].to = v;e[cnt].w = w;head[u] = cnt;
}typedef struct node{int len, ver;
} node;bool operator < (const node &a, const node &b) {return a.len > b.len;
}void dijkstra(int s) {dis[s] = 0;node ss;ss.len = 0, ss.ver = s;priority_queue<node> heap;heap.push(ss);while(heap.size()) {node now = heap.top(); heap.pop();int u = now.ver, dist = now.len;if(vis[u]) continue;vis[u] = 1;for(int i = head[u]; i; i = e[i].next) {int to = e[i].to;if(dis[to] > dist + e[i].w) {dis[to] = dist + e[i].w;node tmp; tmp.len = dis[to]; tmp.ver = to;heap.push(tmp);}}}
}int main() {//  freopen("test.in", "r", stdin);ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);cin >> N >> A >> B;int k, v;memset(dis, inf, sizeof(dis));for(int i = 1; i <= N; i++) {cin >> k;for(int j = 1; j <= k; j++) {cin >> v;if(j == 1) add(i, v, 0);else add(i, v, 1);}}dijkstra(A);if(dis[B] != inf) cout << dis[B] << endl;else cout << "-1" << endl;return 0;
}

N - Tram POJ - 1847相关推荐

  1. Floyd_Warshall POJ 1847 Tram

    题目传送门 题意:这题题目难懂.问题是A到B最少要转换几次城市.告诉每个城市相连的关系图,默认与第一个之间相连,就是不用转换,其余都要转换. 分析:把第一个城市权值设为0, 其余设为0.然后Floyd ...

  2. POJ - 1847 Tram(最短路)

    题目链接:点击查看 题目大意:火车从起点开到终点,轨道上有很多岔路口,每个岔路口都有很多方向(火车能够选择任意一个方向行驶),但是默认 的是第一个方向,如果要选择其他的方向需要增加一次切换的操作,问最 ...

  3. POJ - 1847 Tram(dijkstra)

    题意:有向图有N个点,当电车进入交叉口(某点)时,它只能在开关指向的方向离开. 如果驾驶员想要采取其他方式,他/她必须手动更换开关.当驾驶员从路口A驶向路口B时,他/她尝试选择将他/她不得不手动更换开 ...

  4. poj 1847 Tram 最短路 dijkstra、floyed

    文章目录 Dijkstra算法: AC的代码: WA的代码: Floyed代码: 我实在是找不到dijkstra的写法哪里错了,哭了,样例还有自己编的数据都没问题,但是就是WA,放弃 = = 第二天到 ...

  5. POJ - 1847 Tram

    Question Link 题目意思 3 2 1 2 2 3 2 3 1 2 1 2 第一行 从点1 出发,接下来有两个点.2(直接到达).3,要改变方向才能到. 所以意思就是 1->2 可以直 ...

  6. POJ - 1847 Tram 最短路,思维建图

    题目链接 POJ-1847 题意 给定n节点,节点之间有道路相连,但是每个节点都有个开关,只有开关指向的节点才能通行,你可以搬动开关.给定起点终点,求最少搬动开关次数. 解法 建图,对于每个节点,初始 ...

  7. POJ 1847 火车变轨道 (简单最短路)

    题意:火车从一点开到另一点,轨道上有很多岔路口,每个路口都有好几个方向(火车能够选任意一个方向开),但是 默认的是 第一个指向的方向,所以如果要选择别的方向的话得 进行一次切换操作 ,给定一个起点一个 ...

  8. POJ - 1847(朴素dijkstra)

    题目链接 思路: 由题意得只有第一个方向不要转距离为 0,其他方向要转距离都为 1, 已知起点和中点,朴素dijkstra即可,感觉最短路的问题很多有建图思路大概就会写了. 样例为答案为 0 的情况解 ...

  9. POJ 最短路问题-Dijkstra

    POJ 最短路问题集锦: Dijkstra算法: 详细介绍: http://hi.baidu.com/iotbill/item/cb5fc1de28a3e63721e250d9 Dijkstra算法是 ...

最新文章

  1. cntos7 安装Anaconda3 和Jupyter notebook
  2. (转)使.Net程序在未安装framework的电脑上运行(公布方法、源代码)
  3. 不使用session,借助redis实现验证码
  4. java之点击一次之后失效_JavaScript 事件绑定只能执行一次了,再次点击就变得无效 ,求助怎么回事...
  5. 分享一个VS2013代码窗口一闪而过的解决方案。
  6. 移动端自适应缩放代码
  7. nodejs连接远程MySQL数据库_nodejs remote链接mysql数据库总结
  8. Caused by: java.lang.StringIndexOutOfBoundsException: length=5; regionStart=0; regionLength=-1
  9. NLP样本不均衡之常用损失函数对比(附代码)
  10. python threading join_浅谈Python中threading join和setDaemon用法及区别说明
  11. [转]教你如何在博客园放“可运行代码
  12. 挖矿木马 sustes 追踪溯源分析
  13. 天思ERP软件常见问题解决方案
  14. (1)ROS安装时Rosdep 报错解决教程
  15. 在Win7下去掉快捷方式箭头的简便手动操作
  16. easyui treegrid
  17. 三菱M80操作介绍_三菱PLC电脑上仿真操作步骤
  18. 篇4:xShell连接ubuntu不成功
  19. 十款浏览器插件,让你拥有更好的浏览器体验
  20. 基于3D Vision眼镜的OSG立体显示 【转】

热门文章

  1. TricycleGAN:基于形状先验的无监督图像合成和分割
  2. 激光雷达与相机—哪种更适合自动驾驶?
  3. 人脸识别:insightface自定义数据集制作 | 附练手数据集
  4. 【OpenCV 4开发详解】直方图操作
  5. Task03——零基础入门NLP - 基于机器学习的文本分类
  6. 在Ubuntu上源码安装MySQL+安装问题解决+安全优化
  7. Sqlite3的安装Windows
  8. Apache Spark源码走读之8 -- Spark on Yarn
  9. Linux下磁盘读写优化的分析
  10. 记录零基础GO编程入门笔记之一