思路:
反向建邊,初始化終點可以到達的點並標記,列舉沒被標記的點,把他們到達的點的標記記為0(注意要開乙個新的陣列標記,否則可能會用已修改的點繼續更新)
最後求終點到起點的最短路
**:
#include#include#include
#include
#include
using
namespace
std;
const
int maxn = 10010,maxm = 200010,inf = 2147483647
;#define makenode(name,uu,dd); node name;name.u=(uu);name.d=(dd);
intn,m,s,t,first[maxn],dis[maxn];
struct
edgee[maxm];
inline
intread()
while(c>='
0'&&c<='9'
)
return x*w;
}int mm=0
;void insert(int u,int
v)int tcan[maxn]=,can[maxn];
void bj(intn)}
void
start()
struct
node
};void
solve()
}}void
print()
intmain()
s=read();t=read();
start();
solve();
print();
return0;
}
洛谷P2296 尋找道路
在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑最短。注意 圖g 中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度。輸入格式...
洛谷 P2296 尋找道路
題目描述 在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑最短。注意 圖g 中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度...
洛谷 P2296 尋找道路
題目大意 在乙個有向圖中找出2點之間的最短路,並且路徑上的所有點的出邊所指向的點都直接或間接與終點連通。題解 spfa 佇列 dfs 1.從終點方向搜,把終點能到的點標記可到達。2.把終點能到達的點的出邊判斷,如果出邊未被標記則狀態更新為不可到達。3.做spfa,若t i 可以到達就做,不然不做。v...