蒜頭最近在沉迷**,尤其是人物關係複雜的言情**。它看到的人物關係描述得很的麻煩的時候覺得非常蒜疼,尤其是人物關係裡有冗餘的時候。什麼是冗餘關係呢?
這篇**裡有n句描述人物關係的句子,描述了n個人的關係。
每條句子的定義是這樣的:
x<->y 它的意思是:x認識y,y也認識x
我們認為**中的人物關係是具有傳遞性的,假如a認識b,b認識c,則a也認識c。
冗餘關係的定義:就是即使沒有這條人物關係,原來的人物之間的所有關係也照樣成立。
比如:**中已經提到了a認識b,b也認識c。在此之後再講a認識c就是乙個冗餘的關係。
小蒜頭想求出一共有多少條冗餘關係,你能幫幫它嗎?也許並查集能幫上忙哦。
輸入格式:
第一行兩個整數,表示句子數量n(1<=n<=1000),表示人數m(1<=m<=1000)。
接下來n行,每行兩個數,表示一組人物關係。
輸出格式:
乙個整數,表示冗餘關係的數目。
樣例1輸入:
3 31 21 3
2 3
輸出:
1
人物的認識是雙向的,這樣可以認為乙個人的社交圈子構成一棵樹,這棵樹中每個人都互相認識。
這也意味著每次輸入的資訊都觸發一次森林的更新,也就是把這次資訊記載的兩個人所在的樹合併成乙個。
合併時還需要判斷,如果原來屬於同一棵樹,這就是乙個冗餘資訊,所以把計數加一。
#include #include using namespace std;
int fa[2000];
// 還記得之前閱讀課裡講的並查集演算法
// father函式返回的是節點x的祖先節點
int father(int x)
// 合併兩個節點所在集合,同時判斷兩個點之前是否在乙個集合裡
// 函式返回true則之前兩個點不在乙個集合中
bool join(int x, int y)
else
}// 初始化乙個n個點的並查集
void init(int n)
int main()
printf("%d\n", count);
return 0;
}
冗餘關係 並查集
太原成成中學第3次模擬賽 第4題 mrs.chen是乙個很認真很稱職的語文老師 所以,當她看到學生作文裡的人物關係描述得非常的麻煩的時候,她非常生氣,於是宣布 凡是作文裡有冗餘關係的,一率罰抄出師表10次.同學們非常的恐懼,於是,每當他們寫出一篇作文,都要拿來你這個語文兼oi天才這裡,問你有沒有冗餘...
開學第一課
因為是開學第一課,而且這是我的第一篇個人部落格,更何況還是技術部落格,所以我會認真對待,不過畢竟第一次,所以難免各方面會有不足,所以有任何的意見或建議都可以提出來以供本人提高。下面廢話少說,進入正題。使用quartus,新建乙個專案,建立乙個bdf檔案,雙擊bdf空白處,新增元件符號。找到 7413...
鋼琴第一課
哇 昨天去上了第一節鋼琴課,好開心好開心 核心要義 感覺自己像個小公主 儀態儀容 屁股只能坐一半 身體保持正直 手非常溫柔非常輕鬆地搭到琴鍵上 胳膊肘整個過程保持不動 兩手手腕微微向內旋轉,盡量讓手背與琴鍵平行,中空狀。落下時,呈自由落體狀,每個手指放到該放的琴鍵上。一首曲目彈奏完畢,手,輕輕地溫柔...