電車 洛谷1346 dp

2021-07-26 10:08:33 字數 1007 閱讀 3182

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

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

對於每乙個點,和第乙個點(也就是資料中第乙個輸入的點)的連邊的權值為0,除此以外其他邊的權值為1。之所以可以這麼搞,是因為每個點最多就訪問一次,所以每個路口也最多變更一次狀態。

//dij+堆優化版本

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct arredge[50000];

int ls[10000];

int dis[10000];

int v[10000];

int n,m,s,t;

int edge_m;

struct cmp

}; //優先佇列的定義。

void add(int x,int y,int w)

;ls[x]=edge_m;

}int main()

}dis[s]=0; v[s]=1;

q.push(s);

for (int ii=1;ii<=n;ii++)}}

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

printf("-1");

else

printf("%d",dis[t]);

}

洛谷 1346 電車

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

洛谷 1346 電車

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

洛谷1346 電車

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