時間限制:
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)
樣例輸入
110 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題解:vector建圖;pre陣列記錄;
**:
1 #include2 #include3 #include4
using
namespace
std;
5const
int maxn=100010
;6 vectorvec[maxn];
7int
pre[maxn],s;
8#define mem(x) memset(x,0,sizeof(x))
9void dfs(int
x)16}17
}18intmain()
30dfs(s);
31 pre[s]=-1;32
for(int i=1;i<=n;i++)
36 puts(""
);37}38
return0;
39 }
這種方法wa,但是不知道為什麼:
1 #include2 #include3 #include4
using
namespace
std;
5const
int maxn=100010
;6 vectorvec[maxn];
7int
pre[maxn],s;
8#define mem(x) memset(x,0,sizeof(x))
9int print(int
x)14
return -1;15
}16intmain()
26for(int i=1;i<=n;i++)
30 puts(""
);31}32
return0;
33 }
吝嗇的國度 dfs vector
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入第一行輸入乙個整...
nyoj20 吝嗇的國度 dfs vector
filename author 蘇相學 date 2016年6月25日11 01 56 description 給你乙個圖,讓你寫出每個頂點必須經過的前乙個頂點,這個圖比較特殊是乙個最簡連通圖 others 用vector來建圖,把每個連通的邊都push back,因為是無向的所以兩個頂點都要pus...
吝嗇的國度
描述 在乙個吝嗇的國度裡有n個城市,這n個城市間只有n 1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市 假設你不走重複的路 輸入 第一行輸入乙個整數m表示測試資料共有m 1 m 5 組 每組測試資料的第一行輸...