電車 洛谷1346 最短路

2021-07-26 11:28:01 字數 2104 閱讀 6448

在乙個神奇的小鎮上有著乙個特別的電車網路,它由一些路口和軌道組成,每個路口都連線著若干個軌道,每個軌道都通向乙個路口(不排除有的觀光軌道轉一圈後返回路口的可能)。在每個路口,都有乙個開關決定著出去的軌道,每個開關都有乙個預設的狀態,每輛電車行駛到路口之後,只能從開關所指向的軌道出去,如果電車司機想走另乙個軌道,他就必須下車切換開關的狀態。

為了行駛向目標地點,電車司機不得不經常下車來切換開關,於是,他們想請你寫乙個程式,計算一輛從路口a到路口b最少需要下車切換幾次開關。

第一行有3個整數2<=n<=100,1<=a,b<=n,分別表示路口的數量,和電車的起點,終點。

接下來有n行,每行的開頭有乙個數字ki(0<=ki<=n-1),表示這個路口與ki條軌道相連,接下來有ki個數字表示每條軌道所通向的路口,開關預設指向第乙個數字表示的軌道。

輸出檔案只有乙個數字,表示從a到b所需的最少的切換開關次數,若無法從a前往b,輸出-1。

題目一股本子的氣息 / 《電車之狼》 什麼的

對於預設的路線連邊權為0,其他的作1,跑一遍最短路就可以了

注意自環坑人

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define debug puts("-----")

#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)

#define drp(i, st, ed) for (int i = st; i >= ed; i -= 1)

#define fill(x, t) memset(x, t, sizeof(x))

#define min(x, y) x#define max(x, y) x>y?x:y

#define pi (acos(-1.0))

#define eps (1e-8)

#define inf (1<<30)

#define ll long long

#define db double

#define ld long double

#define n 1001

#define e n * 8 + 1

#define l 255

using

namespace

std;

struct edgee[e];

int inqueue[n], dis[n], tis[n], ls[n];

int edgecnt;

inline

int read()

ch = getchar();

}while (ch <= '9' && ch >= '0')

return x * v;

}inline

int addedge(int &cnt, const

int &x, const

int &y, const

int &w = 1); ls[x] = cnt;

return0;}

inline

int spfa(const

int &st, const

int &ed, const

int &n)

for (int i = ls[now]; i; i = e[i].next)}}

inqueue[now] = 0;

}if (dis[ed] == dis[0])

return dis[ed];

}int main(void)}}

printf("%d\n", spfa(st, ed, n));

return

0;}

洛谷1346 電車 最短路

在乙個神奇的小鎮上有著乙個特別的電車網路,它由一些路口和軌道組成,每個路口都連線著若干個軌道,每個軌道都通向乙個路口 不排除有的觀光軌道轉一圈後返回路口的可能 在每個路口,都有乙個開關決定著出去的軌道,每個開關都有乙個預設的狀態,每輛電車行駛到路口之後,只能從開關所指向的軌道出去,如果電車司機想走另...

洛谷P1346 電車(最短路)

在乙個神奇的小鎮上有著乙個特別的電車網路,它由一些路口和軌道組成,每個路口都連線著若干個軌道,每個軌道都通向乙個路口 不排除有的觀光軌道轉一圈後返回路口的可能 在每個路口,都有乙個開關決定著出去的軌道,每個開關都有乙個預設的狀態,每輛電車行駛到路口之後,只能從開關所指向的軌道出去,如果電車司機想走另...

洛谷P1346 電車 最短路 Floyed

在乙個神奇的小鎮上有著乙個特別的電車網路,它由一些路口和軌道組成,每個路口都連線著若干個軌道,每個軌道都通向乙個路口 不排除有的觀光軌道轉一圈後返回路口的可能 在每個路口,都有乙個開關決定著出去的軌道,每個開關都有乙個預設的狀態,每輛電車行駛到路口之後,只能從開關所指向的軌道出去,如果電車司機想走另...