題目描述
1920年的芝加哥篇恒,出現(xiàn)了一群強(qiáng)盜。如果兩個(gè)強(qiáng)盜遇上了凶杖,那么他們要么是朋友胁艰,要么是敵人。而且有一點(diǎn)是肯定的智蝠,就是:
我朋友的朋友是我的朋友腾么;
我敵人的敵人也是我的朋友。
兩個(gè)強(qiáng)盜是同一團(tuán)伙的條件是當(dāng)且僅當(dāng)他們是朋友¤就澹現(xiàn)在給你一些關(guān)于強(qiáng)盜們的信息解虱,問你最多有多少個(gè)強(qiáng)盜團(tuán)伙。
輸入輸出格式
輸入格式:
輸入文件gangs.in的第一行是一個(gè)整數(shù)N(2<=N<=1000)漆撞,表示強(qiáng)盜的個(gè)數(shù)(從1編號(hào)到N)殴泰。 第二行M(1<=M<=5000),表示關(guān)于強(qiáng)盜的信息條數(shù)浮驳。 以下M行悍汛,每行可能是F p q或是E p q(1<=p q<=N),F(xiàn)表示p和q是朋友至会,E表示p和q是敵人离咐。輸入數(shù)據(jù)保證不會(huì)產(chǎn)生信息的矛盾。
輸出格式:
輸出文件gangs.out只有一行奉件,表示最大可能的團(tuán)伙數(shù)宵蛀。
輸入輸出樣例
輸入樣例#1:
6
4
E 1 4
F 3 5
F 4 6
E 1 2
輸出樣例#1:
3
大體就是并查集的思路昆著,但是加了敵人的敵人就很讓人懵逼了。
要是暴力存儲(chǔ)搜索的那多沒意思啊對(duì)吧(但是我又想不出什么更好的辦法)糖埋。
所以又是題解大佬的方法%%%宣吱。大佬6的一匹。
就是在f數(shù)組后邊開一塊和n一樣大的空間作為反集瞳别,如果是敵人的話征候,就連接雙方和彼此的反集。
這樣的話敵人的敵人就又和自己連在一起了祟敛。
注意:合并時(shí)最好不要連到反集疤坝,要不然的話輸出時(shí)就循環(huán)的2*n。