ACM HDU 2545 樹上戰爭 樹

2021-08-20 15:33:12 字數 1006 閱讀 9705

題目鏈結

題目分析:

注意:

1:不是二叉樹

2:結點的移動指 移動到父節點

不能模擬結點移動(超時);需要結合樹的特性,結點向上移動的過程中,總會相遇,所以計算距根節點的距離即可!小者勝出。

解題過程:

這道題做得真是一波三折啊!

一開始的思路是模擬結點的移動,每移動一步檢查一下:

建樹結構體,用map,超時;

後發現只用記錄父節點序號即可,用map,繼續超時;

突然意識到直接用int不就行了,還是超時;(好蠢!)

看來思路有問題,看了一眼海島blog的思路,恍然大悟!

程式說明:

陣列在10^6級別左右需要開在main()外面

ac程式:

/**************************

*@author: 3stone

*@acm: hdu-2545

*@time: 18/6/11

*@ide: vs code

***************************/

#include

#include

#define maxn 100005

using

namespace

std;

int tree[maxn]; //儲存父節點

//計算到根節點的距離

int get_dis(int key)

return num;

}int main()

//讀入查詢

for (int i = 0; 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表示輸入結束。節...

I 樹上戰爭 HDU 2545

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