並查集之團夥(codevs)

2022-08-02 23:27:20 字數 1064 閱讀 8833

時間限制: 1 s

空間限制: 128000 kb

2023年的芝加哥,出現了一群強盜。如果兩個強盜遇上了,那麼他們要麼是朋友,要麼是敵人。而且有一點是肯定的,就是:

我朋友的朋友是我的朋友;

我敵人的敵人也是我的朋友。 

兩個強盜是同一團夥的條件是當且僅當他們是朋友。現在給你一些關於強盜們的資訊,問你最多有多少個強盜團夥。

輸入描述

輸入檔案gangs.in的第一行是乙個整數n(2<=n<=1000),表示強盜的個數(從1編號到n)。 第二行m(1<=m<=5000),表示關於強盜的資訊條數。 以下m行,每行可能是f p q或是e p q(1<=p q<=n),f表示p和q是朋友,e表示p和q是敵人。輸入資料保證不會產生資訊的矛盾。

輸出描述

輸出檔案gangs.out只有一行,表示最大可能的團夥數。

樣例輸入64

e 1 4

f 3 5

f 4 6

e 1 2

樣例輸出

資料範圍及提示

2<=n<=1000

1<=m<=5000

1<=p q<=n

#includeint n,m,f[1005],x,y,x1,y1,ans=0,g[1002][1002

];bool z[1005

];char

q,p;

int find(int

x)//

如果不是根,將x的祖先賦值為根(縮短下一次找的路徑);

}int

main()

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

for(int k=1;k<=g[x][0];k++)}}

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

//每個根只加一次;

} printf("%d

",ans);

return0;

}

view code

團夥 並查集 團夥 並查集

題目描述 1920年的芝加哥,出現了一群強盜。如果兩個強盜遇上了,那麼他們要麼是朋友,要麼是敵人。而且有一點是肯定的,就是 我朋友的朋友是我的朋友 我敵人的敵人也是我的朋友。兩個強盜是同一團夥的條件是當且僅當他們是朋友。現在給你一些關於強盜們的資訊,問你最多有多少個強盜團夥。輸入輸出格式 輸入格式 ...

團夥 並查集 並查集 團夥

2 n 1000 1 m 5000 1 p q n 試題分析 這種問題我們一般有兩種解法 打標記 多個並查集 打標記這類方法會在銀河英雄傳說中看到 那麼多個並查集如何解決呢?我們設1 n節點是記錄朋友,n 1 2 n節點是記錄敵人 既然兩個人是朋友,根據題意,我們也要把他們的敵人合起來 如果兩個人是...

團夥 並查集

problem description 在某城市裡住著n個人,任何兩個認識的人不是朋友就是敵人,而且滿足 1 我朋友的朋友是我的朋友 2 我敵人的敵人是我的朋友。所有是朋友的人組成乙個團夥。告訴你關於這n個人的m條資訊,即某兩個人是朋友,或者某兩個人是敵人,請你編寫乙個程式,計算出這個城市最多可能有...