P1346 电车(dijkstra)
P1346 电车
题目描述
在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能)。在每个路口,都有一个开关决定着出去的轨道,每个开关都有一个默认的状态,每辆电车行驶到路口之后,只能从开关所指向的轨道出去,如果电车司机想走另一个轨道,他就必须下车切换开关的状态。
为了行驶向目标地点,电车司机不得不经常下车来切换开关,于是,他们想请你写一个程序,计算一辆从路口A到路口B最少需要下车切换几次开关。
输入输出格式
输入格式:
第一行有3个整数2<=N<=100,1<=A,B<=N,分别表示路口的数量,和电车的起点,终点。
接下来有N行,每行的开头有一个数字Ki(0<=Ki<=N-1),表示这个路口与Ki条轨道相连,接下来有Ki个数字表示每条轨道所通向的路口,开关默认指向第一个数字表示的轨道。
输出格式:
输出文件只有一个数字,表示从A到B所需的最少的切换开关次数,若无法从A前往B,输出-1。
输入输出样例
3 2 1
2 2 3
2 3 1
2 1 2
0
输入时,第一个指向点(也就是数据中第一个输入的点)时,权值为0,除此以外权值为1。是因为每个点最多就访问一次,所以每个路口也最多变更一次状态。所以这也就差不多是个裸的最短路了
#include<cstdio>
#include<cstring> const int MAXN = ;
int dis[MAXN];
int w[MAXN][MAXN];
bool vis[MAXN];
int cnt,n,st,en,minn; void dijkstra()
{ for (int i=; i<=n; ++i) dis[i] = w[st][i];
dis[st] = ;
vis[st] = true;
for (int i=; i<n; ++i)
{
int u = ;
minn = 1e7;
for (int j=; j<=n; ++j)
if (dis[j]<minn && !vis[j])
{
minn = dis[j];
u = j;
}
if (u==) break;
vis[u] = true;
for (int v=; v<=n; ++v)
{
if (!vis[v]&&dis[v]>dis[u]+w[u][v])
dis[v] = dis[u]+w[u][v];
}
}
}
int main()
{
memset(w,0x3f,sizeof(w));
scanf("%d%d%d",&n,&st,&en);
for (int x,y,i=; i<=n; ++i)
{
w[i][i] = ;
scanf("%d",&x);
for (int j=; j<=x; ++j)
{
scanf("%d",&y);
if (j==) w[i][y] = ;
else w[i][y] = ;
}
}
dijkstra();
if (dis[en]>=1e8) printf("-1");
else printf("%d",dis[en]);
return ;
}
P1346 电车(dijkstra)的更多相关文章
- 洛谷 - P1346 - 电车 - Dijkstra/01BFS
https://www.luogu.org/problem/P1346 使用最短路之前居然忘记清空了. #include<bits/stdc++.h> using namespace st ...
- [最短路][模版]P1346 电车
题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定 ...
- 洛谷——P1346 电车
P1346 电车 题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口 ...
- 洛谷P1346 电车
P1346 电车 236通过 757提交 题目提供者yeszy 标签图论福建省历届夏令营 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 解不好啊,快疯了!!哪位大… 求解:为何除了-1的点之 ...
- 洛谷P1346 电车【最短路】
题目:https://www.luogu.org/problemnew/show/P1346 题意:n个路口,每个路口有好几条轨道,默认指向给出的第一个路口. 如果要换到另外的轨道去需要按一次开关.问 ...
- 洛谷P1346 电车(需要稍加思索的最短路)
题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定 ...
- P1346 电车
题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定 ...
- 洛谷 P1346 电车——dijstra
上一波题目 https://www.luogu.org/problem/P1346 是道水题 路口一开始对着的那条路权值为0 其余路权值为1 然后跑一遍最短路就好了 qwq #include<c ...
- 洛谷 P1346 电车
这道题的关键在建图 把每一个车站看成一个点,将这个车站相连的第一个车站建立一条边权为0的边,对于它所相连的其他车站,建立边权为1的边: 这样我们可以得到一张图: 起点,终点都知道了,跑一边最短路即可 ...
随机推荐
- 利物浦VS曼城,罗指导的先手与工程师的后手
本想『标题党』一下的,『高速反击遭遇剧情反转,巴西人力挽狂澜绝处逢生!』这种好像看起来比较厉害的标题似乎在大战之后的第五天已显得不合适了. /不害臊 反正晚了,干脆写点能够引起讨论.并且在未 ...
- hdu-2582 f(n)---找规律+素数筛法
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2582 题目大意: 给出公式Gcd(n)=gcd(C[n][1],C[n][2],……,C[n][n- ...
- Android笔记之 图片自由裁剪
前言--项目中须要用到对用户头像的裁剪和上传功能.关于裁剪.一開始是想自己来做,可是认为这个东西应该谷歌有开发吧,于是一搜索官方文档.果然有.于是.就果断无耻地用了Android自带有关于照片的自由裁 ...
- springmvc时间(date)无法转入后台(@DateTimeFormat+@JsonFormat(GMT+8))
spring时间(date)无法转入后台 Type Status Report Description The server cannot or will not process the reques ...
- http://blog.csdn.net/hhhccckkk/article/details/9313999
http://blog.csdn.net/hhhccckkk/article/details/9313999
- mobileeye
if a human can drive a car based on vision alone – so can a computer. 但是目前哪家能做到?
- 使用 seafile搭建私有云盘
一.系统环境 系统:CentOS7-1708IP地址:192.168.159.33 二.安装seafile [root@seafile ~]# yum -y install epel-release[ ...
- 一位90后程序员的自述:如何从年薪3w到30w
▌自我介绍 引用赵真老师的一首歌<过去不是错>中的一句话:过去不是过错,毕竟我们也开心过.过去不是过错,何必愧疚不知所措. 我们这一代人,我相信多少都会有人和我一样,坚持过一个游戏,叫 D ...
- 嵌入式:指针的指针、链表、UCOS 的 OSMemCreate 。
初看,UCOS 的 OSMemCreate 代码,感觉有点怪怪的,比如,把 指针指向的地址 强制转换成 指针的指针的指向地址 ?那转换后 指针的指针 又是什么? void OSMemCreate (O ...
- 【杂题总汇】AGC027 C - ABland Yard
◆AGC027◆C - ABland Yard 终于知道为什么比赛的时候这么多人做C题了…… +传送门+(这是beta版的) ◇ 题目(自己翻译的,不要在意细节……) P.S. (@ 2018-9-2 ...