1542 無根數變有根樹

2021-08-17 04:47:01 字數 846 閱讀 1135

就是dfs啦,最近跟dfs槓上了。

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

給定一棵包含 n 個節點的無根樹,小hi想知道如果指定其中某個節點 k 為根,那麼每個節點的父節點是誰?

第一行包含乙個整數 n 和 k。1 ≤ n ≤ 1000, 1 ≤ k ≤ n。    

以下n-1行每行包含兩個整數 a 和 b,代表ab之間存在一條邊。 1 ≤ a, b ≤ n。  

輸入保證是一棵樹。

輸出一行包含 n 個整數,分別代表1~n的父節點的編號。對於 k 的父節點輸出0。

樣例輸入

5 4  

1 2

3 1

4 3

5 1

樣例輸出
3 1 4 0 1
**:

#include#include#include#includeusing namespace std;

vectorg[1010];

int n;

int fa[1010],vis[1010];

void dfs(int k)

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

fa[k]=0;

vis[k]=1;

dfs(k);

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

cout<

return 0;

}

無根樹轉有根樹

乙個n n 1000000 個結點的無根樹的各條邊,並指定乙個根結點,要求把樹轉化為有根樹。輸入 結點的數目n,無根樹的各條邊,輸入乙個根結點號。輸出 各個結點的父親編號。執行結果 演算法實現 為方便起見,我們用了stl中的vector來儲存邊,g u 表示u結點的相鄰結點的編號。樹的儲存結構定義 ...

無根樹變為有根樹

即無環連通無向圖 若乙個圖中每條邊都是無方向的,則稱為無向圖。無根樹它要求每個頂點之間都直接或間接相連,且圖中無環,即只有簡單路徑。由於樹是圖的子集,這一類圖具有樹的特徵,但不具有樹狀的形式,沒有特定的根節點,故稱為無根樹。任意選取圖中某個點為根,均可將無根樹轉化為有根樹。includeusing ...

無根樹轉有根樹

輸入乙個n個節點的無根樹的各條邊,並指定乙個根節點,要求把該樹轉化為有根樹,輸出各個節點的父節點編號。樹是一種特殊的圖,因此可以使用鄰接矩陣來表示。如果使用二維陣列來儲存鄰接矩陣,則需要o n2 個元素的空間,因此改用vector陣列。從根節點開始對樹進行dfs。遍歷到每個節點時,使用陣列p來儲存該...