L2 030 冰島人 25分

2021-10-05 06:26:47 字數 1413 閱讀 7902

輸入格式:

輸入首先在第一行給出乙個正整數 n(1隨後一行給出正整數 m,為查詢數量。隨後 m 行,每行給出一對人名,格式為:名1 姓1 名2 姓2。注意:這裡的姓是不帶字尾的。四個字串均由不超過 20 個小寫的英文本母組成。

題目保證不存在兩個人是同名的。

輸出格式:

對每乙個查詢,根據結果在一行內顯示以下資訊:

若兩人為異性,且五代以內無公共祖先,則輸出 yes;

若兩人為異性,但五代以內(不包括第五代)有公共祖先,則輸出 no;

若兩人為同性,則輸出 whatever;

若有一人不在名單內,則輸出 na。

所謂「五代以內無公共祖先」是指兩人的公共祖先(如果存在的話)必須比任何一方的曾祖父輩分高。

輸入樣例:

15chris smithm

adam smithm

bob adamsson

jack chrissson

bill chrissson

mike jacksson

steve billsson

tim mikesson

april mikesdottir

eric stevesson

tracy timsdottir

james ericsson

patrick jacksson

robin patricksson

will robinsson

6tracy tim james eric

will robin tracy tim

april mike steve bill

bob adam eric steve

tracy tim tracy tim

x man april mikes

輸出樣例:

yesno

nowhatever

whatever

na

#include

#include

#include

#include

#include

using

namespace std;

struct node

;mapm;

intcheck

(string s1,string s2)}}

return1;

//根本沒有公共祖先

}int

main()

else

if(s2[len-1]

=='r')}

cin>>t;

while

(t--

)else

if(m[s1]

.***==m[s2]

.***)

else

}return0;

}

L2 030 冰島人 25分

2018年世界盃,冰島隊因1 1平了強大的阿根廷隊而一戰成名。好事者發現冰島人的名字後面似乎都有個 松 son 於是有科普如下 輸入首先在第一行給出乙個正整數 n 1隨後一行給出正整數 m,為查詢數量。隨後 m 行,每行給出一對人名,格式為 名1 姓1 名2 姓2。注意 這裡的姓是不帶字尾的。四個字...

天梯賽 L2 030 冰島人

題意 給你n個人的姓名,他們組成了若干個家族,再給出m個詢問,每次詢問給出兩個人的姓名,問他們能否交往,只要最近公共祖先必須與任何乙個人相隔超過5代才能交往。思路 對每個人的名字進行編號,然後把字尾給去掉,根據名和姓建立若干棵家族樹,再用乙個節點把這若干棵樹給連成一顆樹,找最近公共祖先,特判一下0號...

L2 2 冰島人 (25 分

2018年世界盃,冰島隊因1 1平了強大的阿根廷隊而一戰成名。好事者發現冰島人的名字後面似乎都有個 松 son 於是有科普如下 輸入首先在第一行給出乙個正整數 n 1隨後一行給出正整數 m,為查詢數量。隨後 m 行,每行給出一對人名,格式為 名1 姓1 名2 姓2。注意 這裡的姓是不帶字尾的。四個字...