nyoj 20 吝嗇的國度

2021-06-28 21:44:15 字數 1417 閱讀 5014

時間限制:

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

深搜   基本**:(這個**用的二維陣列過不了因為城市個數最多可達到100000,ac**在後面。宣告 兩個**裡面的二維map含義不一樣)

//這個**思路是對的,就是該題範圍過大,我用map來表示兩城市是否有路   

#include#include#define max 10000+10//範圍太大

int set[max],map[max][max];

int city,start;

void dfs(int num)

}}int main()

printf("\n");

}return 0;

}

ac:

//借用vector  stl容器  

/*用map[i][0--最大下標]來記錄與城市i 有連線路的城市

對照題給的資料來理解map[1][0]=9,map[1][1]=8,

含義:與城市1有連線路的第0個城市為城市9,第1個城市為城市8

*/ #include#include#include#include#define max 100000+10

using namespace std;

vectormap[max];

int set[max];

int city,start;

void dfs(int num)

printf("\n");

}return 0;

}

nyoj20 吝嗇的國度

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入第一行輸入乙個...

NYOJ 20 吝嗇的國度

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入第一行輸入乙個...

NYOJ 20 吝嗇的國度

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入第一行輸入乙個...