原題傳送門
這道題嘛。。
首先根據題目,我們要先知道哪些點能夠到達終點。(反向bfs)
然後我們再求最短路的途中,必須隨時判斷周圍的點是否被第一次bfs標記過。、
所以再來一次bfs。
陣列記得清零,不然會炸。。
下面貼**
#include#include#include
using
namespace
std;
int n,m,num=0
,s,tt;
int q[20000
];int step[20000
];int head[10001
];bool vis[10001
];int a[200001],b[200001
];struct
edgeg[
400001
];void ins(int u,int
v)void bfs1(int
last)
h++;
}}bool chubian(int
q)bool bfs2(int
first)
q[++t]=g[i].to;}}
return
false;}
intmain()
scanf(
"%d%d
",&s,&tt);
bfs1(tt);
memset(head,
0,sizeof
(head));
memset(g,
0,sizeof
(g));
num=0
;
for(int i=1;i<=m;i++)
ins(a[i],b[i]);
if(!bfs2(s))printf("
-1\n");
}
NOIP2014 尋找道路
題目描述 在有向圖g中,每條邊的長度均為1,現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1的情況下使路徑最短。注意 圖g中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度。輸入...
noip2014 尋找道路
題目提供者該使用者不存在 標籤圖論2014noip提高組 難度普及 提高 提交該題 討論 題解記錄 在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑...
NOIP2014 尋找道路
傳送門 這道題還是比較簡單的。我們只要先用老套路建出反圖,記錄終點與哪些點是聯通的,之後從所有不與終點聯通的點出發,在反圖上列舉一下與之直接相連的邊,也設為不能走。之後我們在可以走的路上跑最短路即可。看一下 include include include include include includ...