USACO4 3 3 街道賽跑 解題報告

2021-07-23 02:45:52 字數 1964 閱讀 7180

【問題描述】  

下圖表示一次街道賽跑的跑道。可以看出有一些路口(用 0 到 n 的整數標號),和連線這些路口的箭頭。路口 0 是跑道的起點,路口 n 是跑道的終點。箭頭表示單行街道。運動員們可以順著街道從乙個路口移動到另乙個路口(只能按照箭頭所指的方向)。當運動員處於路口位置時,他可以選擇任意一條由這個路口引出的街道。

上圖有 10 個路口的跑道 乙個良好的跑道具有如下幾個特點: 

1)、每乙個路口都可以由起點到達。 

2)、從任意乙個路口都可以到達終點。

3)、終點不通往任何路口。 

4)、運動員不必經過所有的路口來完成比賽。有些路口卻是選擇任意一條路線都必須到達的(稱為「不可避免」的)。在上面的例子中,這些路口是 0,3,6,9。對於給出的良好的跑道,你的程式要確定「不可避免」的路口的集合,不包括起點和終點。

假設比賽要分兩天進行。為了達到這個目的,原來的跑道必須分為兩個跑道,每天使用乙個跑道。第一天,起點為路口 0,終點為乙個「中間路口」;第二天,起點是那個中間路口,而終點為路口 n。

對於給出的良好的跑道,你的程式要確定「中間路口」的集合。如果良好的跑道 c 可以被路口 s 分成兩部分,這兩部分都是良好的,並且 s 不同於起點也不同於終點,同時被分割的兩個部分滿足下列條件:

1)、它們之間沒有共同的街道

2)、s 為它們唯一的公共點,並且 s 作為其中乙個的終點和另外乙個的起點。那麼我們稱 s 為「中間路口 」。在例子中只有路口 3 是中間路口。(注: 其實簡而言之就是說第二天除了中間路口無論怎麼跑也跑不到第一天的路口上) 

【輸入格式】  

包括乙個良好的跑道,最多有 50 個路口,100 條單行道。 一共有 n+2 行,前面 n+1 行中第 i 行表示以編號為(i-1)的路口作為起點的街道,每個數字表示乙個終點。行末用 -2 作為結束。最後一行只有乙個數字 -1。 

【輸出格式】  

你的程式要有兩行輸出: 

第一行包括:跑道中「不可避免的」路口的數量,接著是這些路口的序號,序號按照公升序排列。 

第二行包括:跑道中「中間路口」的數量,接著是這些路口的序號,序號按照公升序排列。 

【輸入樣例】   

1 2 -2

3 -2

3 -2

5 4 -2

6 4 -2

6 -2

7 8 -2

9 -2

5 9 -2

-2-1

【輸出樣例】  

2 3 6

1 3【資料範圍】  

最多有 50 個路口,100 條單行道。

解題思路:根據題意,因為不可避免的路口是從起點到終點一定要經過的路口,所以要求不可避免的路口就可以列舉除起點和終點外的每個路口,將該路口刪掉(假刪除,用陣列進行標記),看從起點能否走到終點,即進行一次dfs(或bfs)遍歷,如果能走到,則該路口不是不可避免的路口,如果不能,則該路口就是不可避免的路口。接下來是求中間路口,因為中間路口將跑道分為兩部分後,從中間路口出發和從起點出發經過的路口除了中間路口外是沒有公共的,而分成兩個跑道後從起點出發經過的路口在求不可避免的路口時已經標記過了,所以只需列舉除起點和終點外的每個路口,從該路口出發進行一次dfs(或bfs)遍歷,標記出所能到達的路口,如果從起點出發經過的路口和從該路口出發經過的路口有相同的,則該路口不是中間路口,否則,該路口就是中間路口。

#include#include#include#include#include#includeusing namespace std;

const int maxn=55;

int n=0,x;

vectorg[maxn],ans1,ans2;

int vis1[maxn],vis2[maxn];

void dfs1(int i)

{ vis1[i]=1;

for(int k=0;k

USACO 4 3 街道賽跑 推理 深搜

圖一表示一次街道賽跑的跑道。可以看出有一些路口 用 0 到 n 的整數標號 和連線這些路口的箭頭。路口 0 是跑道的起點,路口 n 是跑道的終點。箭頭表示單行道。運動員們可以順著街道從乙個路口移動到另乙個路口 只能按照箭頭所指的方向 當運動員處於路口位置時,他可以選擇任意一條由這個路口引出的街道。圖...

街道字元識別賽題理解

這算是我的第一篇的cv筆記,cv方面了解的不多,這次的街道字元識別算是乙個正式的入門吧,下面簡要介紹一下我對本次賽題的一些個人理解。賽題以街道字元為賽題資料,於svhn街道字元 the street view house numbers svhn dataset 訓練集資料報括3w張 驗證集資料報括...

USACO月賽題解 第三講 排序

彙總見 這一部分的題目也很經典 第10題 重排乾草 restack 這種題要麼0分要麼滿分,和 訓練指南 的第一章例3幾乎一樣,通過代數分析將題目轉化 最後變成求中位數的題目,o n 還是o nlogn 隨意 bzoj裡出現了兩道和這題幾乎一樣的題目 錯了兩個點 修改資料型別 還是錯這兩個點 發現輸...