I 樹上戰爭 HDU 2545

2022-09-03 16:45:12 字數 1101 閱讀 2443

給一棵樹,如果樹上的某個節點被某個人佔據,則它的所有兒子都被佔據,lxh和pfz初始時分別站在兩個節點上,誰當前所在的點被另乙個人佔據,他就輸了比賽,問誰能獲勝 

input輸入包含多組資料 

每組第一行包含兩個數n,m(n,m<=100000),n表示樹的節點數,m表示詢問數,n=m=0表示輸入結束。節點的編號為1到n。 

接下來n-1行,每行2個整數a,b(1<=a,b<=n),表示編號為a的節點是編號為b的節點的父親 

接下來m行,每行有2個數,表示lxh和pfz的初始位置的編號x,y(1<=x,y<=n,x!=y),lxh總是先移動 

output對於每次詢問,輸出一行,輸出獲勝者的名字sample input

2 1

1 21 2

5 21 2

1 33 4

3 54 2

4 50 0

sample output

lxh

pfzlxh

本題輸入、輸出都很多,請使用scanf和printf代替cin、cout。

我覺得這個題應該算水題(qaq但是打比賽是沒有看出來),

思路:維護乙個樹,然後用乙個陣列維護它的深度就行了。

ac:**(592ms)

#include#include#include#includeusing namespace std;

const int maxn = 1e5+5;

int n,m;

int vis[maxn],v[maxn];

int update(int x)

int main()

//for(int i = 1;i<=n;i++) printf("%d ",v[i]);

//printf("\n");

int c = n;

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

//for(int i = 1;i<=n;i++) printf("%d ",vis[i]);

//printf("\n");

for(int i = 1;i<=m;i++) }

return 0;

}

樹上戰爭 HDU 2545

題目 給一棵樹,如果樹上的某個節點被某個人佔據,則它的所有兒子都被佔據,lxh和pfz初始時分別站在兩個節點上,誰當前所在的點被另乙個人佔據,他就輸了比賽,問誰能獲勝 input 輸入包含多組資料 每組第一行包含兩個數n,m n,m 100000 n表示樹的節點數,m表示詢問數,n m 0表示輸入結...

樹上戰爭(HDU 2545)

給一棵樹,如果樹上的某個節點被某個人佔據,則它的所有兒子都被佔據,lxh和pfz初始時分別站在兩個節點上,誰當前所在的點被另乙個人佔據,他就輸了比賽,問誰能獲勝 input 輸入包含多組資料 每組第一行包含兩個數n,m n,m 100000 n表示樹的節點數,m表示詢問數,n m 0表示輸入結束。節...

hdu2545 樹上戰爭 並查集

problem description 給一棵樹,如果樹上的某個節點被某個人佔據,則它的所有兒子都被佔據,lxh和pfz初始時分別站在兩個節點上,誰當前所在的點被另乙個人佔據,他就輸了比賽,問誰能獲勝 input 輸入包含多組資料 每組第一行包含兩個數n,m n,m 100000 n表示樹的節點數,...