家譜問題 map解決!

2021-10-22 21:17:49 字數 737 閱讀 8040

傳送門

這題用hash和並查集也可以解,但hash實在太麻煩,會把人寫死,由於本人最近在練習map,就不管並查集了。

f a[

1]=2

fa[1]=2

fa[1]=

2 意思是 1

11 的父親是 222.

f a[

「rod

ney」

]=ge

orge

fa[「rodney 」]=george

fa[「ro

dney

」]=g

eorg

e 同理

對於最後查詢而言,假設查詢s

ss的祖先,

s tr

in

gstring

string

s s=

sss=s

ss=s

,如果ss出現在father陣列中,ss=

fa[s

]ss=fa[s]

ss=fa[

s];如果沒有出現,那麼說明ssss

ss的父親就是他自己,也就是s

ss的祖先。

#include

using

namespace std;

intmain()

if(c==

'?')

}return0;

}

家譜 並查集 map

題目描述 給出充足的父子關係,請你編寫程式找到某個人的最早的祖先。輸入格式 輸入由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係中父親只有一行,兒子可能有若干行,用 name 的形式描寫一組父子關係中的父親的名字,用 name 的形式描寫一組父子關係中的兒子的名字 接下來用 name ...

家譜 map容器與並查集

本題思路參考自洛谷博主zhm iancai。建立map容器 mapp 其模板為 mapvarname 此處建立的是字串對應字串的詞典。查詢操作 string findf string x while cin tmp else if tmp else 1 建立父親 if tmp 如果s1位置上沒有鍵值...

map 效率問題

當關乎效率時應該在map operator和map insert之間仔細選擇 class widget public widget widget double weight widget operator double weight mapm m 1 1.50 表示式m 1 是m.operator ...