L2 016願天下人都是失散多年的兄妹

2021-09-13 17:48:47 字數 1304 閱讀 1709

呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內(即本人、父母、祖父母、曾祖父母、高祖父母)則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?

接下來給出乙個正整數k,隨後k行,每行給出一對有情人的id,其間以空格分隔。

思路:建立乙個結構體,用dfs來判斷父母是否是同乙個人,當兩人的父母中同時有一人不可考的時候,預設不是同一人。

#include

using

namespace std;

int n;

const

int maxn =

1e6+5;

struct node fml[maxn]

;int flag =0;

intdfs

(node a, node b,

int s)

if(a.fid !=-1

&& b.fid !=-1

) flag +

=dfs

(fml[a.fid]

, fml[b.fid]

, s +1)

;if(a.mid !=-1

&& b.fid !=-1

) flag +

=dfs

(fml[a.mid]

, fml[b.fid]

, s +1)

;if(a.fid !=-1

&& b.mid !=-1

) flag +

=dfs

(fml[a.fid]

, fml[b.mid]

, s +1)

;if(a.mid !=-1

&& b.mid !=-1

) flag +

=dfs

(fml[a.mid]

, fml[b.mid]

, s +1)

;return flag;

}int

main()

int k;

cin >> k;

for(

int i =

0; i < k; i++)if

(dfs

(fml[a]

, fml[b],0

))cout <<

"no"

<< endl;

else

cout <<

"yes"

<< endl;

flag =0;

//每次計算完都要把flag清空,以免計算出乙個no之後的全是no

}return

0;}

L2 016 願天下有情人都是失散多年的兄妹

呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?輸入第一行給出乙個正整數n 2 n 104 隨後n行,每行按以下格式給出乙個人的資訊 本人id 性別 父親id 母親i...

L2 016 願天下有情人都是失散多年的兄妹

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?...

L2 016 願天下有情人都是失散多年的兄妹

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?...