在樹結構中,找到兩個節點的最近最先節點。
問題規模較小時,比如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,你...