九度 1035 並查集相關

2021-06-21 20:32:02 字數 1650 閱讀 2834

題目1035:找出直系親屬

時間限制:1 秒

記憶體限制:32 兆

特殊判題:否

提交:1738

解決:706

題目描述:如果a,b是c的父母親,則a,b是c的parent,c是a,b的child,如果a,b是c的(外)祖父,祖母,則a,b是c的grandparent,c是a,b的grandchild,如果a,b是c的(外)曾祖父,曾祖母,則a,b是c的great-grandparent,c是a,b的great-grandchild,之後再多一輩,則在關係上加乙個great-。

輸入:輸入包含多組測試用例,每組用例首先包含2個整數n(0<=n<=26)和m(0

輸出:如果詢問的2個人是直系親屬,請按題目描述輸出2者的關係,如果沒有直系關係,請輸出-。

具體含義和輸出格式參見樣例.

樣例輸入:

3 2

abccde

efgfa

be0 0

樣例輸出:

great-grandparent

-

2023年浙江大學計算機及軟體工程研究生機試真題

解題思路: 一看 會覺得的這個題要麼和二叉樹的樹形結構有些關係 ,但是呢 如果用二叉樹又不太好處理 , 正好有一種方式 和這道題很像 那就是並查集:

首先,題目問的是最後兩者的關係 父子關係還是 什麼關係什麼的 ,那和並查集裡面查詢兩者的關係很相似 ,在於什麼呢,在於要記錄多少代問題,這裡給出了一種用計數的方式解決

其次: 輸入時輸入兩個 或者三個字母, 表示他們之間的關係,因此 現在就是要把他們的關係整合一下 ,這個和並查集裡面 的union很像 因此就行到用並查集相關問題解決了。。。

下面給出**: 細節部分會在**裡面給出說明

最近有點小忙, 雖然每天堅持寫**,但是效率不是很高,可能是最近太累了吧,我會努力調整到最佳狀態,每天以最陽光,最有效率的一面去生活!

好吧這道題糾結了我好幾天 ,一直找bug 一直沒找到, 後然看了下別人的部落格 修改了下,已經成功ac

#include#include#includeusing namespace std;

int child[30];//表示孩子的數目

int find(int x , int y)

x = child[x];

res++;//

}//這裡是用迴圈進行求解的 也可以用遞迴進行求解,不過就是會麻煩一些

//經過上面的迴圈,一定會出現兩種結果要麼找到他們之間有關係,要麼麼他們之間沒有任何關係

if(child[x]== y)

else

}int main()

if(buf[2] != '-')

}for(int j = 0 ; j < n ;j++)

else if(ans1 != -1)

printf("grandparent\n");

break;}}

else if (ans2 != -1)

printf("grandchild\n");

break;}}

}}

return 0;

}

九度1035 找出直系親屬《並查集》

題目描述 如果a,b是c的父母親,則a,b是c的parent,c是a,b的child,如果a,b是c的 外 祖父,祖母,則a,b是c的grandparent,c是a,b的grandchild,如果a,b是c的 外 曾祖父,曾祖母,則a,b是c的great grandparent,c是a,b的grea...

ACM 九度1012 1109 並查集

題目 暢通工程 思路 類似於kruskal演算法對資料進行預處理,分成不同集合,集合個數減一就是答案 1109 只要判斷最後集合個數是否為1即可 感悟 尋找根節點時,進行了 路徑壓縮 即在查詢過程中,路徑上所有點的父節點都重新賦值,直接指向根節點 這樣有效降低搜尋樹的高度,提高了效率 include...

九度OJ 朋友圈 並查集

題目描述 假如已知有n個人和m對好友關係 存於數字r 如果兩個人是直接或間接的好友 好友的好友的好友.則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。假如 n 5 m 3 r 表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1 2 3屬於乙個朋友圈,4 5屬於另乙個朋...