題解 BOI2003 團夥

2021-09-02 07:58:00 字數 584 閱讀 6089

其實綠色有點看高了此題。

此題只需要加乙個「敵人的敵人就是我的朋友」就可以了,而只要乙個人x與另一人y是敵人,x就和y的第乙個敵人是朋友就可以將x弄進y的敵人團夥,而y的敵人將全在那個團夥中

下面是**

#includeusing namespace std;

int bcj[5010];

int e[5010]; //每個人的首個敵人

int group[5001];團夥陣列

int gets(int x)

void merge(int x,int y)

int main()

for (i=1;i<=y;i++)

}//如果x敵人y還只有x乙個敵人,就不牽線,把x變為y的第乙個敵人,若y已有敵人,就牽線,y也是同理。

for (i=1;i<=x;i++)bcj[i]=gets(i);每個人的老大都變為總boss

for (i=1;i<=x;i++)

if (group[bcj[i]]==0)

//判斷團夥數

cout

}the end

BOI2003 團夥(並查集)

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

題解 P1892 BOI2003 團夥 C

原題傳送門 前置知識 並查集,不會的補了再來。這道題只是在並查集的基礎上多了乙個操作而已。這種操作,叫做反集 就先這麼叫著 題目裡有一種關係是互為朋友,這很好理解,把互為朋友的兩個點合併就可以了。互為敵人怎麼辦?用反集!所謂反集,就是分別把x,y和它們對應的虛點連線起來。虛點 a的虛點是a n 點數...

洛谷 P1892 BOI2003 團夥

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