题目

一个有向图,每个点有个默认方向和若干个其他方向,走默认方向权值为0,其他方向权值为1,求最短路

输入

3 2 1(3个点,点2到点1)
2 2 3(2个点,起点为1,2为默认点,3为其他点)
2 3 1(2个点,起点为2,3为默认点,1为其他点)
2 1 2

输出

0


解题思路

其实就像我题目说的那样默认方向权值为0,其他方向权值为1,求最短路。这里用SPFA算法。


代码

#include<cstdio>
using namespace std;
struct woc{int next,x,y,w;
};//日常邻接表
woc a[50001];
int xx,yy,n,m,k,state[10001],ls[10001],t,head,tail,f[10001],star,over;
bool v[10001];
int main()
{scanf("%d%d%d",&n,&star,&over);state[1]=1;int u=0;    for (int i=1;i<=n;i++){scanf("%d",&xx);for (int j=1;j<=xx;j++){scanf("%d",&yy);if (j==1) a[++u].w=0;else a[++u].w=1;//判断默认方向a[u].next=ls[i];ls[i]=u;a[u].x=i;a[u].y=yy;//邻接表}}   for (int i=1;i<=n;i++) f[i]=2147483647;head=0;tail=1;state[1]=star;v[state[1]]=true;f[star]=0;//初始化while (head!=tail){head++;//出队head=(head-1)%n+1;//循环队列t=ls[state[head]];//读边while (t!=0){if (f[a[t].x]+a[t].w<f[a[t].y]){f[a[t].y]=f[a[t].x]+a[t].w;//松弛if (!v[a[t].y]){tail++;//入队tail=(tail-1)%n+1;//循环队列state[tail]=a[t].y;v[a[t].y]=true;//标记}}t=a[t].next;//读下一条边}v[state[head]]=false;//解封}if (f[over]==2147483647) printf("-1");//如果无解else printf("%d\n",f[over]);
}

洛谷P1346-电车【日常图论,最短路,SPFA】相关推荐

  1. 洛谷P1346 电车

    P1346 电车 题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口 ...

  2. 洛谷 P1346 电车 dijkstra

    题目链接:https://www.luogu.org/problemnew/show/P1346 思路: 这是一道隐藏的最短路问题 把每一个车站看成一个点,将这个车站相连的第一个车站建立一条权为0的边 ...

  3. 洛谷P2296-寻找道路【日常图论,最短路,SPFA】

    题目 一个有向图,要求满足要求的最短路径,要求为: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 输入1 3 2 (3个点,2条边) 1 2 (1和2之间可以连接) 2 1 1 3 (从1到 ...

  4. 洛谷P1346 电车(双端队列BFS)

    [题目描述] 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关 ...

  5. 洛谷 P1346 电车

    最重要的事情是读题! 切换开关的状态后,它会自动复原我也不知道这是什么鬼开关 把每个节点看作是点,轨道看作是边.转换一次开关状态看作边权为1.由于题中n的范围是100,所以可以用最暴力好写的Floyd ...

  6. 洛谷2505 [HAOI2012]道路(最短路计数)

    洛谷传送门 [题目分析] 线段树?bczd,这么小的范围直接暴力就行啦. 直接O(n)枚举源点,每次跑最短路,然后对于每一条路径统计是否在最短路上.两个端点各有多少条最短路径经过即可. [代码~] # ...

  7. 洛谷1346 电车

    题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定 ...

  8. 洛谷-1346 电车

    题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定 ...

  9. 【洛谷】【二分答案+最短路】P1462 通往奥格瑞玛的道路

    在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量有一天他醒来后发现自己居然到了联盟的主城暴风城在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目背景 [题目描述:] 在艾泽拉斯 ...

最新文章

  1. [译]Kinect for Windows SDK开发入门(九):骨骼追踪进阶 下
  2. 一学即懂得计算机视觉
  3. Android Load Picture Asynchronously
  4. ConcurrentMap接口
  5. 2021暑假生产实习【SSM实习项目-超市积分管理系统】博客汇总表
  6. 【原创】请避免GO语言中的携程空跑(CPU突然激增)
  7. STM32F7xx —— QSPI
  8. php-cms,GitHub - lovelife10000/L-php-cms: 基于laravel框架开发的一款php CMS内容管理系统,前端采用angular、jquery技术...
  9. 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法
  10. tar命令压缩和解压缩
  11. Java 算法SM2加密解密
  12. EasyRecovery数据恢复软件中文版免费下载v15.0绿色版
  13. 凌晨半夜短信通道异常,乙方如何答复?
  14. WIN7下Virtualbox虚拟Ubuntu共享文件夹设置
  15. 2021.5.10-2021.5.16周报
  16. Backup App's data without rooting the phone
  17. 线程同步互斥机制--互斥锁
  18. 图灵完备及TypeScript图灵完备性验证
  19. 美国计算机属于敏感专业吗,美国留学F1签证中最常见被check的14个敏感专业
  20. 保留小数位数spit函数

热门文章

  1. r语言用行名称提取数据框信息显示na_学会这些R语言技巧至少可以节省半年时间...
  2. linux系统故障实验,Linux常见系统故障排除
  3. mysql5.7组复制多主一从搭建_MySql5.7-多源复制(多主单从)
  4. 职称计算机还用考试,职称计算机考试注意事项
  5. java的编译器怎么出来_怎样掌握ava编译器的使用,教程在这里,如何进行Java初级学习...
  6. 算法设计与分析——贪心算法——最优装载问题
  7. [Nginx]负载均衡和动静分离
  8. [PAT乙级]1001 害死人不偿命的(3n+1)猜想
  9. Compound Words UVA - 10391(c++用法中substr函数用法+map实现)
  10. matlab 判断鼠标按下,Matlab:如何通过使用回调来获取当前鼠标在点击位置