資訊奧賽一本通 並查集 團夥 group

2021-08-19 16:28:17 字數 859 閱讀 1034

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 596     通過數: 247 

在某城市裡住著n個人,任何兩個認識的人不是朋友就是敵人,而且滿足:

1、我朋友的朋友是我的朋友;

2、我敵人的敵人是我的朋友;

所有是朋友的人組成乙個團夥。告訴你關於這n個人的m條資訊,即某兩個人是朋友,或者某兩個人是敵人,請你編寫乙個程式,計算出這個城市最多可能有多少個團夥?

第1行為n和m,1以下m行,每行為p x y,p的值為0或1,p為0時,表示x和y是朋友,p為1時,表示x和y是敵人。

乙個整數,表示這n個人最多可能有幾個團夥。

6 4

1 1 4

0 3 5

0 4 6

1 1 2

3

我們可以把朋友的節點設為一樣,記錄在fa[i]中,遇到敵人時,將敵人的敵人放到fa[i]中,所以需要a[i]記錄敵人。

#includeusing namespace std;

#define n 10100

int fa[n],a[n];

//fa[i]記錄父親節點:朋友,a[i]記錄i的第乙個敵人

int find(int x)

int main()

else

//y同理

if(!a[y])

a[y]=x;

else}}

int tot=0;

for(int i=1;i<=n;i++)

if(fa[i]==i) tot++;

cout

}

並查集 資訊奧賽一本通 家譜 gen

時間限制 1000 ms 記憶體限制 65536 kb 提交數 227 通過數 109 現代的人對於本家族血統越來越感興趣,現在給出充足的父子關係,請你編寫程式找到某個人的最早的祖先。由多行組成,首先是一系列有關父子關係的描述,其中每一組父子關係由二行組成,用 name的形式描寫一組父子關係中的父親...

資訊奧賽一本通 1183病人排隊

1183 病人排隊 題目描述 病人登記看病,編寫乙個程式,將登記的病人按照以下原則排出看病的先後順序 1.老年人 年齡 60歲 比非老年人優先看病。2.老年人按年齡從大到小的順序看病,年齡相同的按登記的先後順序排序。3.非老年人按登記的先後順序看病。輸入 第1行,輸入乙個小於100的正整數,表示病人...

資訊奧賽一本通1185 單詞排序

輸入一行單詞序列,相鄰單詞之間由1個或多個空格間隔,請按照字典序輸出這些單詞,要求重複的單詞只輸出一次。區分大小寫 一行單詞序列,最少1個單詞,最多100個單詞,每個單詞長度不超過50,單詞之間用至少1個空格間隔。資料不含除字母 空格外的其他字元。按字典序輸出這些單詞,重複的單詞只輸出一次。she ...