題目鏈結
題目分析:
注意:不能模擬結點移動(超時);需要結合樹的特性,結點向上移動的過程中,總會相遇,所以計算距根節點的距離即可!小者勝出。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表示輸入結束。節點...