NOIP2014D2T2尋找道路(Spfa)

2022-03-01 12:42:33 字數 880 閱讀 2238

洛谷傳送門

這道題可以把邊都反著存一遍,從終點開始深搜,然後把到不了的點 和它們所指向的點都去掉。

最後在剩餘的點裡跑一遍spfa就可以了。

——**

#include #include 

#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;

}

view code

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 上所有可產生聯合權值的...