尋找道路
題目鏈結
這道題非常的水,按照題意,
先反向建邊,從終點搜尋,標記出可以到達終點的點
然後列舉一遍,判斷出符合條件1的點
再從起點搜尋一遍就可以了
1 #include2 #include3 #include4using
namespace
std;
5#define n 10010
6#define m 200010
7int
n,m,head[n],_head[n],dis[n],tot,s,t;
8int
que[m],head,tail;
9bool
vis[n],ok[n];
10 inline int
read()
14return
x;15}16
struct
node e[m],_e[m];
19 inline void add(int x,int
y)27
intmain()
2835 s=read(); t=read();
36 que[++tail]=t; vis[t]=1;37
while(head46}
47for(int i=1;i<=n;i++)
53 ok[i]=flag;54}
55 head=tail=0
;56 que[++tail]=s;
57 dis[s]=1;58
while(head68}
69if
(dis[t])
70 printf("
%d\n
",dis[t]-1
);71
else
72 puts("-1"
);73
return0;
74 }
洛谷P2296 尋找道路 NOIP 2014
題目描述 這道題有個坑,雖然沒掉進去,但是沒跨過去 坑is here路徑上的所有點的出邊所指向的點都直接或間接與終點連通。所以就需要建反圖 來刪去一些沒用的點 從終點倒著找 搜尋不到的點就刪去 與這些點直接相連的點也刪去 要注意做標記的時候 要用乙個新的陣列 以防其他的被改變 還有就是陣列模擬鄰接表...
洛谷P2296 尋找道路
在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑最短。注意 圖g 中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度。輸入格式...
洛谷 P2296 尋找道路
題目描述 在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑最短。注意 圖g 中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度...