一開始做的時候一直卡在17分,怎麼看都覺得沒有問題,最後看了別人部落格才知道,竟然還會詢問某人的父母和其他人的父母可否結婚(當然是選擇原諒ta啦)。。。。像我這樣純潔的小孩子根本就考慮不到啊。。。
所以,在輸入父母的序號時也需將性別標記上。
題目說要保證5代之間沒有血緣關係,那麼可以先找其中一人的5代並都進行標記,再找第二個人的5代,若第二個人的5代中有已經被標記的,那麼說明他們不可以結婚。
此題的抽象模型類似於一顆二叉樹。
#include
#include
#include
#include
#include
#include
using
namespace
std;
struct peopeo[10011];
int fpre[10015], mpre[10015];
int vis1[10015];
bool flag = true;
void dfs(int f1,int m1,int cnt)
if(m1 != -1)
if(f1 != -1)
dfs(fpre[f1], mpre[f1],cnt+1); // 父親的父母
if(m1 != -1)
dfs(fpre[m1], mpre[m1],cnt+1); // 母親的父母
}int main()
int ask;
cin >> ask;
while(ask--)
flag = true;
memset(vis1,0,sizeof(vis1));
int f1 = fpre[id1], m1 = mpre[id1];
int f2 = fpre[id2], m2 = mpre[id2];
dfs(f1,m1,1); // 除去本人這一代,所以從1開始
dfs(f2,m2,1);
if(flag)
cout
<<"yes"
<< endl;
else
cout
<<"no"
<< endl;
}return
0;}
天梯賽 願天下有情人都是失散多年的兄妹 題解
7 42 願天下有情人都是失散多年的兄妹 呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?輸入格式 輸入第一行給出乙個正整數n 2 n 10 4 隨後n行,每行按以下...
願天下有情人都是失散多年的兄妹
呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?輸入第一行給出乙個正整數n 2 le n le 10 4 1 0 4 隨後n行,每行按以下格式給出乙個人的資訊 本人i...
願天下有情人都是失散多年的兄妹
呵呵。大家都知道五服以內不得通婚,即兩個人最近的共同祖先如果在五代以內 即本人 父母 祖父母 曾祖父母 高祖父母 則不可通婚。本題就請你幫助一對有情人判斷一下,他們究竟是否可以成婚?輸入第一行給出乙個正整數n 2 n 10 4 隨後n行,每行按以下格式給出乙個人的資訊 本人id 性別 父親id 母親...