P1346 电车

懂得怎么建图就好做了,有些路权值为1,有些为0

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=10000;
 4 const int maxm=50000;
 5 const int INF=1e9;
 6
 7 inline int read()
 8 {
 9     int x=0,k=1;char c=getchar();
10     while(c<‘0‘||c>‘9‘) {if(c==‘-‘) k=-1;c=getchar();}
11     while(c>=‘0‘&&c<=‘9‘) x=(x<<3)+(x<<1)+(c^48),c=getchar();
12     return x*k;
13 }
14
15 int cnt,dis[maxn],vis[maxn],head[maxm],n,m,s,t;
16
17 struct Edge{
18     int u,v,w,next;
19 }e[maxm];
20
21 inline void add(int u,int v,int w)
22 {
23     e[++cnt].u=u;
24     e[cnt].v=v;
25     e[cnt].w=w;
26     e[cnt].next=head[u];
27     head[u]=cnt;
28 }
29
30 struct node{
31     int w,now;
32     inline bool operator <(const node& x) const
33     {
34     return w>x.w;
35     }
36 };
37
38 priority_queue<node> q;
39
40 void dijikstra()
41 {
42     for(int i=1;i<=n;++i) dis[i]=INF;
43     dis[s]=0;
44     q.push((node){0,s});
45     while(!q.empty())
46     {
47         node x=q.top();
48         q.pop();
49         int u=x.now;
50         if(vis[u]) continue;
51         vis[u]=1;
52         for(int i=head[u];i;i=e[i].next)
53         {
54             int v=e[i].v;
55             if(dis[v]>dis[u]+e[i].w)
56             {
57                 dis[v]=dis[u]+e[i].w;
58                 q.push((node){dis[v],v});
59             }
60         }
61     }
62 }
63
64 int main()
65 {
66     n=read(),s=read(),t=read();
67     for(int i=1,x,y,z;i<=n;++i)
68     {
69         x=read();
70         for(int j=1;j<=x;++j)
71         {
72             y=read();
73             if(j==1) add(i,y,0);
74             else add(i,y,1);
75         }
76    }
77    dijikstra();
78    if(dis[t]>=INF)  printf("-1");
79    else printf("%d",dis[t]);
80    return 0;
81 }

原文地址:https://www.cnblogs.com/zytwan/p/9931818.html

时间: 2024-10-14 23:14:58

P1346 电车的相关文章

洛谷P1346 电车

P1346 电车 236通过 757提交 题目提供者yeszy 标签图论福建省历届夏令营 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 解不好啊,快疯了!!哪位大… 求解:为何除了-1的点之外都… 为什么会超时…… 题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定着出去的轨道,每个开关都有一个默认的状态,每辆电车行驶到路口之后,只能从开

[最短路][模版]P1346 电车

题目描述 在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能).在每个路口,都有一个开关决定着出去的轨道,每个开关都有一个默认的状态,每辆电车行驶到路口之后,只能从开关所指向的轨道出去,如果电车司机想走另一个轨道,他就必须下车切换开关的状态. 为了行驶向目标地点,电车司机不得不经常下车来切换开关,于是,他们想请你写一个程序,计算一辆从路口A到路口B最少需要下车切换几次开关. 输入输出格式

luogu P1346 电车 最短路

显然结论 一个点不会经过了两次,一个阀门不会反复开关.第一条边为0,其余边为1. 1 #include <cstdio> 2 #include <queue> 3 using namespace std; 4 int head[120],dis[120],to[30000],nxt[30000],val[30000]; 5 bool vis[120]; 6 int cnt,s,t,n; 7 8 struct pot 9 { 10 int x,dis; 11 pot (int _x

【2019寒假集训DAY2】图论

Dijkstra 条件:无负权:时间:O(n*n) 详解+模板: https://www.cnblogs.com/jason2003/p/7222182.html (模板)P1821 [USACO07FEB]银牛派对Silver Cow Party:https://www.luogu.org/recordnew/show/12339877 void dj(){ for(int i=1;i<=m;i++) if(i!=k)dis[i]=M; for(int i=1;i<=m;i++){ int

RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)

RapeLay(电车之狼R)的结局介绍 (隐藏结局) 必备知识要让MM怀孕非常easy.起初刚进入调教模式后.仅仅要H一次 MM就開始有时期状态. 生理(连上有红晕) ->不详状态(闭目第一次)->危急状态(闭目第二 次) 仅仅要在危急状态下和MM H 时 性->内 MM 開始受精 受精状态下 头像仅仅显示肚子  怀孕状态下 也仅仅显示肚子(大了点..) 提示: 受精怀孕过程须要非常长的周期,怎么消磨时间? 最快方法就是直接选 车站场景模式->车站->随便哪位->PLA

你有想过现今的电车如此准时是因为大数据的原因吗?

我当年在瑞士旅游的时候对于一件事特别好奇. 就是这个 瑞士首都伯尔尼老城内的有轨电车是如何可以将时间计算的如此准时?因为毕竟会有路人过马路和红路灯以及资产管理设备老化等各种不确定因素.所以大数据君当时还站在车站牌子底下等了10分钟,检验了车来的时间是否真的那么准时.答案是:准时到爆! 不仅是瑞士,在充斥着袋鼠和考拉的国度--澳大利亚,也有一个名叫Yarra Trams的电车网络,它是世界上最大的有轨电车网络.拥有250公里双层轨道.29条路线.487辆电车,每年在1,763个电车站发送旅客1.9

【十大思想实验之一】电车难题

一个疯子把五个无辜的人绑在电车轨道上.一辆失控的电车朝他们驶来,并且片刻后就要碾压到他们. 幸运的是,你可以拉一个拉杆,让电车开到另一条轨道上. 然而问题在于,那个疯子在另一个电车轨道上也绑了一个人.考虑以上状况,你是否应拉杆? 这是道德和法律之间的辨证关系,但是以目前的情况来看,自己决不能因为救人而犯法,法律是强制性的,而道德则是良心:暗自自责和监狱自豪自己可以选择,但是,自责的完全没有必要,因为你自己选择的就是合理的,至少对于自己是最合理的,所以无愧于心,无所谓的走开或者大胆的杀人,但是人毕

旅游电车

[题目描述] 首都有N个旅游景区,电车只沿道路规定的方向行驶,为了不使投入使用的电车有可能无法回到它的起始站,人们希望知道可以在哪些景区设置站点. 一个景区可以被设置成车站,当且对于任意一个从该景区出发所能到达的景区,均至少有一条路可回到该景区.现已完成了一份景区之间的道路连通情况的报告,报告中将给出首都的景区数目N.道路总数M以及一些形如“景区A和景区B之间有一条从A到B的单向道路”的信息.根据报告中的信息,列出所有可以被设置成车站的景区. [输入描述] 输入由多份报告组成(这些报告相互无任何

cojs 1175. [顾研NOIP] 旅游电车

1175. [顾研NOIP] 旅游电车 ★★☆   输入文件:buss.in   输出文件:buss.out   简单对比时间限制:1 s   内存限制:256 MB [问题描述] Henryy国正致力于首都的一个旅游电车建设工程.首都有N个旅游景区.Henryy国的电车永远只沿道路规定的方向行驶,为了不使投入使用的电车有可能无法回到它的起始站,Henryy希望知道他的首都的可以在哪些景区设置站点.一个景区可以被设置成车站,当且仅当对于任意一个从该景区出发所能到达的景区,均至少有一条路可回到该景