2023年 尋找道路

2022-08-02 22:51:21 字數 1239 閱讀 6329

兩遍bfs

//將邊反向;

//第一遍bfs搜尋t能到達的的點,標記不能到的點;

//將t不能到達的點的相鄰點標記不能到達;

//第二遍bfs尋找通過能到的點到達s點的最短距離;

//感覺用鄰接矩陣有點危險,就順便練了一下邊表;

#include#include

using

namespace

std;

intn,m,s,t,x,y;

int di[10002],to[200002],be[200002],b[200002

];//

di[i]儲存第i個點最後讀入的點;

//to[i]讀入的第i條邊反向後的終點;

//be[i]讀入的第i條邊反向後的起點;

//b[i]與讀入的第i條邊相同起點(反向後的)的上一次讀入的邊;

//具體操作看程式;

int sz[10002]; //

sz[i]表示第i個結點到達t的最短距離;

bool f[10002

];void find(int x,bool

z) q.pop();}}

else

now=b[now];

}q.pop();}}

}int

main()

scanf(

"%d%d

",&s,&t);

find(t,1);

queue

qu;for(int i=1;i<=n;i++) if(f[i]==0

) qu.push(i);

while(!qu.empty())

qu.pop();

}find(t,0);

if(sz[s]!=0) printf("

%d\n

",sz[s]);

else printf("

-1\n");

return0;

}view code

NOIP2014 尋找道路

題目描述 在有向圖g中,每條邊的長度均為1,現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1的情況下使路徑最短。注意 圖g中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度。輸入...

noip2014 尋找道路

題目提供者該使用者不存在 標籤圖論2014noip提高組 難度普及 提高 提交該題 討論 題解記錄 在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑...

NOIP2014 尋找道路

傳送門 這道題還是比較簡單的。我們只要先用老套路建出反圖,記錄終點與哪些點是聯通的,之後從所有不與終點聯通的點出發,在反圖上列舉一下與之直接相連的邊,也設為不能走。之後我們在可以走的路上跑最短路即可。看一下 include include include include include includ...