搜尋 吝嗇的國度

2021-06-20 22:45:11 字數 1116 閱讀 2386

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

在乙個吝嗇的國度裡有n個城市,這n個城市間只有n-1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市(假設你不走重複的路)。

輸入第一行輸入乙個整數m表示測試資料共有m(1<=m<=5)組

每組測試資料的第一行輸入乙個正整數n(1<=n<=100000)和乙個正整數s(1<=s<=100000),n表示城市的總個數,s表示參觀者所在城市的編號

隨後的n-1行,每行有兩個正整數a,b(1<=a,b<=n),表示第a號城市和第b號城市之間有一條路連通。

輸出每組測試資料輸n個正整數,其中,第i個數表示從s走到i號城市,必須要經過的上乙個城市的編號。(其中i=s時,請輸出-1)

樣例輸入

1

10 1

1 91 8

8 10

10 3

8 61 2

10 4

9 53 7

樣例輸出

-1 1 10 10 9 8 3 1 1 8
這個是大神的做法:

#include #include int map[100005];

void adjust(int currentcity)

}int main()

else

}adjust(startcity);

map[startcity] = - 1;

for (i = 1; i < citynum; i++)

printf("%d\n", map[i]);

} return 0;

}

比較簡單的深搜演算法:

#include #include #include #include using namespace std;

int pre[100005];

vectorv[100005];

void dfs(int cur)

dfs(s);

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

cout<

搜尋之吝嗇的國度

include include include using namespace std vectorv 100005 int pre 100005 void dfs int start 1的後續節點 9 8 2 2的後續節點 1 3的後續節點 10 7 4的後續節點 10 5的後續節點 9 6的後續...

吝嗇的國度

描述 在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入 第一行輸入乙個整數m表示測試資料共有m 1 m 5 組 每組測試資料的第一行輸...

吝嗇的國度

描述 在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入 第一行輸入乙個整數m表示測試資料共有m 1 m 5 組 每組測試資料的第一行輸...