洛谷傳送門
這道題可以把邊都反著存一遍,從終點開始深搜,然後把到不了的點 和它們所指向的點都去掉。
最後在剩餘的點裡跑一遍spfa就可以了。
——**
#include #includeview code#include
const
int maxn = 100001
;int
n, m, s, t, cnt1, cnt2;
intdis[maxn];
int next1[4 * maxn], to1[4 * maxn], head1[4 *maxn],
next2[
4 * maxn], to2[4 * maxn], head2[4 *maxn];
bool
vis[maxn], b[maxn], f[maxn], flag;
inline
void add1(int x, int
y)inline
void add2(int x, int
y)inline
void dfs(intu)}
inline
void spfa(int
u) }
}}int
main()
scanf(
"%d %d
", &s, &t);
dfs(t);
if(!flag)
for(i = 1; i <= n; i++)
if(!vis[i])
spfa(s);
printf("%d
", dis[t]);
return0;
}
NOIP 2014 Day2T2 尋找道路
題目中文,不需要我說,直接講思路 題目要求找到一條從起點到終點的路徑,而且保證最短的前提下,每個點的出邊連線的點都要能到達終點,so 第一步,反向建圖,跑一遍bfs,確定能到達終點的所有點 第二步,減掉連著不能到達終點的點的點以及不能到達終點的點,用乙個隨便什麼陣列記錄能用的點就好了 第三步,正常的...
NOIP2014 day2 t2 尋找道路
尋找道路 noip2014 day2 t2 描述在有向圖 g 中,每條邊的長度均為 1,現給定起點和終點,請你在圖中找一條從起點到 終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件 1 的情況下使路徑最短。注意 圖 g 中可能存在重邊和自環,題...
NOIP2014 D1T2 聯合權值
題目描述 無向連通圖g 有n 個點,n 1 條邊。點從1 到n 依次編號,編號為 i 的點的權值為w i 每條邊的長度均為1 圖上兩點 u v 的距離定義為u 點到v 點的最短距離。對於圖g 上的點對 u,v 若它們的距離為2 則它們之間會產生wu wv 的聯合權值。請問圖g 上所有可產生聯合權值的...