呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內(即本人、父母、祖父母、曾祖父母、高祖父母)則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?
輸入第一行給出乙個正整數n(2 <= n <= 104),隨後n行,每行按以下格式給出乙個人的資訊:
本人id 性別 父親id 母親id
其中id是5位數字,每人不同;性別m代表男性、f代表女性。如果某人的父親或母親已經不可考,則相應的id位置上標記為-1。
接下來給出乙個正整數k,隨後k行,每行給出一對有情人的id,其間以空格分隔。
注意:題目保證兩個人是同輩,每人只有乙個性別,並且血緣關係網中沒有**或隔輩成婚的情況。
對每一對有情人,判斷他們的關係是否可以通婚:如果兩人是同性,輸出「never mind」;如果是異性並且關係出了五服,輸出「yes」;如果異性關係未出五服,輸出「no」。
24 00001 m 01111 -1
00002 f 02222 03333
00003 m 02222 03333
00004 f 04444 03333
00005 m 04444 05555
00006 f 04444 05555
00007 f 06666 07777
00008 m 06666 07777
00009 m 00001 00002
00010 m 00003 00006
00011 f 00005 00007
00012 f 00008 08888
00013 f 00009 00011
00014 m 00010 09999
00015 m 00010 09999
00016 m 10000 00012
00017 f -1 00012
00018 f 11000 00013
00019 f 11100 00018
00020 f 00015 11110
00021 m 11100 00020
00022 m 00016 -1
00023 m 10012 00017
00024 m 00022 10013
9 00021 00024
00019 00024
00011 00012
00022 00018
00001 00004
00013 00016
00017 00015
00019 00021
00010 00011
never mind
yes
never mind
no yes
no yes
no no
用倆個佇列交替遍歷同一輩的人。
用set的size變化來判斷是否有重複的祖先。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
class node
};node a[100001];
bool isv[100001];
int n;
int main()
if (mid != -1)
}int m;
cin >> m;
int x, y;
for (int i = 0; i < m; i++) else
que.pop();
if (a[t].father != -1)
if (a[t].mom != -1)
}
} else
que2.pop();
if (a[t].father != -1)
if (a[t].mom != -1)
}
}if (isno)
}if (isno) else }}
return
0;}
L2 016 願天下有情人都是失散多年的兄妹
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?...
L2 016 願天下有情人都是失散多年的兄妹
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?...
L2 016 願天下有情人都是失散多年的兄妹
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者陳越 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?輸...