hiho 13 最近祖先問題

2021-07-07 10:38:08 字數 746 閱讀 8495

在樹結構中,找到兩個節點的最近最先節點。

問題規模較小時,比如100個節點,我們可以先將乙個節點的所有祖先儲存起來,然後另外乙個節點在查詢祖先的過程中檢視是否有相同的祖先。

判斷key是否存在用count;

#include 

#include

#include

#include

#include

#include

using

namespace

std;

unordered_map

nametoid;

vector

names;

enum ;

int f[maxn];

int findfirst(int p1, int p2)

int main()

if (!nametoid.count(son))

f[nametoid[son]] = nametoid[father];

}int m;

scanf("%d", &m);

for (int i=0; i< m; i++)

int sp = -1;

if (nametoid.count(p1) && nametoid.count(p2))

if (sp== -1)

printf("-1\n");

else

cout

0;}

hiho 1062 最近公共祖先

題目大意 給出一棵家譜樹,樹中的節點都有乙個名字,保證每個名字都是唯一的,然後進行若干次查詢,找出兩個名字的最近公共祖先。分析 實現 include include include include include include includeusing namespace std unordere...

hiho 1062 最近公共祖先

題目大意 給出一棵家譜樹,樹中的節點都有乙個名字,保證每個名字都是唯一的,然後進行若干次查詢,找出兩個名字的最近公共祖先。分析 實現 include include include include include include includeusing namespace std unordere...

hiho一下 最近公共祖先 一

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小ho最近發現了乙個神奇的 雖然還不夠像58同城那樣神奇,但這個 仍然讓小ho樂在其中,但這是為什麼呢?為什麼呢?小hi如是問道,在他的觀察中小ho已經沉迷這個 一周之久了,甚至連他心愛的樹玩具都棄置一邊。嘿嘿,小hi,你...