NOIP2014 尋找道路

2022-05-26 03:42:07 字數 1133 閱讀 7188

一張有向圖 長度均為1 輸入格式為x y 表示x和y之間有一條路

給定s和t 求s到t的最短路

要求:路徑上的所有點的出邊所指向的點都直接或間接與終點連通

在這裡點包括3種:

1 自己指向的節點都可以到達終點

2 自己可以到達終點的點

3 普通的點

顯然 3包括2 2包括1 這裡要的是由1組成的最短路

我們可以建立反向路    從t點bfs 標記能到達的點 這裡的點為2 

列舉所有沒被標記的點 他們可以到達的點如果為2 則取消標記

這樣被標記的點就是1了 我們就可以開開心心的跑bfs求最短路了

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

using

namespace

std;

8int

n, m, s, t;

9int pre[10010], ans[100010

];10

bool f[10010], ff[10010

];11 vectorv[10010

];12 queueq;

13int

main()

22 cin >> s >>t;

23q.push(t);

24 f[t] = 1;25

while (!q.empty()) 34}

35 memcpy(ff, f, sizeof

(f));

36for (int i = 1;i <= n; i++)

37if (!f[i])

38for (int j = 0, k = v[i].size();j < k; j++)

39if

(ff[v[i][j]])

40 ff[v[i][j]] = 0;41

q.push(t);

42 ans[s] = -1;43

while (!q.empty()) 52}

53 cout << ans[s] <

54return0;

55 }

ac code

NOIP2014 尋找道路

題目描述 在有向圖g中,每條邊的長度均為1,現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1的情況下使路徑最短。注意 圖g中可能存在重邊和自環,題目保證終點沒有出邊。請你輸出符合條件的路徑的長度。輸入...

noip2014 尋找道路

題目提供者該使用者不存在 標籤圖論2014noip提高組 難度普及 提高 提交該題 討論 題解記錄 在有向圖g 中,每條邊的長度均為1 現給定起點和終點,請你在圖中找一條從起點到終點的路徑,該路徑滿足以下條件 1 路徑上的所有點的出邊所指向的點都直接或間接與終點連通。2 在滿足條件1 的情況下使路徑...

NOIP2014 尋找道路

傳送門 這道題還是比較簡單的。我們只要先用老套路建出反圖,記錄終點與哪些點是聯通的,之後從所有不與終點聯通的點出發,在反圖上列舉一下與之直接相連的邊,也設為不能走。之後我們在可以走的路上跑最短路即可。看一下 include include include include include includ...