noip2014 day2 2 尋找道路

2021-07-15 15:14:07 字數 1998 閱讀 8842

描述

在有向圖 g 中,每條邊的長度均為 1,現給定起點和終點,請你在圖中找一條從起點到 終點的路徑,該路徑滿足以下條件:

路徑上的所有點的出邊所指向的點都直接或間接與終點連通。

在滿足條件 1 的情況下使路徑最短。

注意:圖 g 中可能存在重邊和自環,題目保證終點沒有出邊。 請你輸出符合條件的路徑的長度。

輸入格式

第一行有兩個用乙個空格隔開的整數 n 和 m,表示圖有 n 個點和 m 條邊。

接下來的 m 行每行 2 個整數 x、y,之間用乙個空格隔開,表示有一條邊從點 x 指向點y。

最後一行有兩個用乙個空格隔開的整數 s、t,表示起點為 s,終點為 t。

輸出格式

輸出只有一行,包含乙個整數,表示滿足題目描述的最短路徑的長度。

如果這樣的路徑不存在,輸出-1。

input1

3 2

1 2

2 1

1 3

output1

-1input2

6 6

1 2

1 3

2 6

2 5

4 5

3 4

1 5

output2

3限制

對於 30%的資料,0 < n ≤ 10,0 < m ≤ 20;

對於 60%的資料,0 < n ≤ 100,0 < m ≤ 2000;

對於 100%的資料,0 < n ≤ 10,000,0 < m ≤ 200,000,0 < x,y,s,t ≤ n,x ≠ t。

【輸入輸出樣例1說明】

如上圖所示,箭頭表示有向道路,圓點表示城市。起點 1 與終點 3 不連通,所以滿足題目描述的路徑不存在,故輸出-1。

【輸入輸出樣例2說明】

如上圖所示,滿足條件的路徑為 1->3->4->5。注意點 2 不能在答案路徑中,因為點 2 連了一條邊到點 6,而點 6 不與終點 5 連通。

題目叫我們不能走最終到不了終點的點,所以我們就得想辦法把這些點標記出來,自然而然地可以想到,從終點開始廣搜,不在佇列裡的都是無法到達的。

然後從起點開始正著廣搜,如果當前節點的子節點有無法到達的,那麼當前點就不進行任何操作,否則就正常廣搜。

#include

#include

#include

#include

using

namespace

std;

int n,m,x,y,t,w,tot,tot,start,last;

int head[10005],to[400005],next[400005];

int head[10005],to[400005],next[400005];

int g[10005],dis[10005],p[10005],ok[10005];

void add(int x,int y)

void add(int x,int y)

int main()

for(int i=1;i<=m;i++)

cin>>start>>last;

t=0;w=1;

g[1]=last;

p[last]=1;

while(t1;

for(int i=head[x];i!=-1;i=next[i])

if(p[to[i]]==0)

}for(int i=1;i<=n;i++) p[i]=0;

t=0;w=1;

g[1]=start;

p[start]=1;

while(tif(x==last)

int can=ok[x];

for(int i=head[x];i!=-1;i=next[i])

if(p[to[i]]==0) can=(can&ok[to[i]]);

if(can>0) }}

cout

<

0;}

NOIP 2014 Day2T2 尋找道路

題目中文,不需要我說,直接講思路 題目要求找到一條從起點到終點的路徑,而且保證最短的前提下,每個點的出邊連線的點都要能到達終點,so 第一步,反向建圖,跑一遍bfs,確定能到達終點的所有點 第二步,減掉連著不能到達終點的點的點以及不能到達終點的點,用乙個隨便什麼陣列記錄能用的點就好了 第三步,正常的...

NOIP2014 day2 t2 尋找道路

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

NOIP2014 尋找道路

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