njupt 社團吞併

2021-06-17 00:22:13 字數 1827 閱讀 7438

c. 社團吞併

某段時間社會上流行企業收購,而南郵也受此社會風氣影響,各個社團到處想著吞併其它社團,以實現擴張勢力範圍且夢想著統治南郵社團,於是,**的

「社團吞併風波」就是這樣開始了...

已知每個社團有兩個個屬性:勢力,標籤。 勢力代表乙個社團的強大能力,任何乙個社團只能吞併勢力比它小的社團。標籤代表該社團是屬於什麼型別的》,乙個社團可以有多個標籤,如傳媒科協有「技術類」,「藝術類」等標籤,任意兩個社團只有當他們有某乙個相同的標籤時才能發生吞併。

下面c天每天有一次談判(a,b),表示編號為a的社團和社團b談判,談判規則如下:

(1)若a,b某一方滿足把另一方吞併的所有條件,強大的一方s就會毫不猶豫地把弱的一方x吞併掉,並且把x吞併過的社團也全部納入自己的麾下。

(2)在滿足(1)的條件下,若弱的一方x原本屬於某個社團y,則此時x會叛變y,讓自己以及自己麾下的社團全都投靠社s。

如(3, 4)表示社團編號為3 和 4談判,若社4的勢力比社3強,且他們有某乙個相同的標籤,則現在社3以及社3吞併的社團全部都屬於社4。

之後若有(2, 3)談判,則社團3還是以原來的勢力值和標籤做條件,並且若社2被3吞併了,則社2也會屬於社4.

再之後若有(3, 5)談判,社5能吞併社3,則社3會背叛社4,帶領自己的小社團們投靠社5,但它的原boss社4依然不變。

問在「南郵社團吞併風波」結束後每個社團的總boss的編號,也就是最終屬於那個社團。

input :

三個整數n,m,c(n <= maxn, m <= 60). n表南郵的社團數,分別用編號1..n來表示(最開始時社i屬於社i,這個敘述有點綽,就是自己屬於自己)。m>表示總的標籤個數,用1~m編號。

接下來n行,每一行首先兩個整數pi, li, 分別表編號為i的社團勢力值和標籤個數。之後有li個整數b1,b2,...,bli(1 <= bk <= m, 1 <= k <= li)表》社團i所屬的標籤。

接下來c行,第i行表第i天的乙個談判ai,bi(1 <= ai,bi <= n)。

output :

一行有n個數,第i個數表社團i在風波結束後屬於的社團編號。

/*

簡單並查集。

注意,因為有「背叛」,而且是帶小弟背叛這麼一說,所以在「並操作」的時候不能壓縮路徑! 到最後輸出序列的時候才壓縮路徑。

壓縮路徑的正確性的成立是建立在這麼乙個條件上的:兩個元素並在乙個集合之後,那後面它們都會在同乙個集合裡。

但是這裡的「背叛」因素不符合上述條件,兩個社團可能原來屬同一大boss社,但是有可能某乙個會被其它社團挖牆角,背叛出去。

判斷標籤是否有某乙個相同,若是直接遍曆法比較的話可能會超時。需要用到位運算,因為 m < 60,我們可以用乙個long long來模擬乙個社團的標籤label[i],若i社具有標籤k,則label[i]的二進位制的第k-1個位置是1.

*/#include #define maxn 100005

#define maxm 60

int n, m, c;

long long label[maxn];

int power[maxn], father[maxn];

void check_and_move(int x, int y)

int find(int x)

int main()

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

while(c--)

for(int i = 1; i <= n; i++) printf("%d%c", find(i), i == n ? '\n' : ' ');

return 0;

}

njupt 會漏的棧

出題原意是考雙端佇列,但是因為a題要讓大家都過,所以把資料搞得很小。第乙份 是純陣列模擬棧暴搞的,遇到大資料會完蛋,第二份是用雙端佇列模擬,可以勝任大資料的情況。純陣列模擬棧暴搞 include using namespace std int s 10005 int k,top m,x,bottom...

組建北京IT社團

我有乙個想法,現在北京做it的這麼多,不乏一些資深it精英,也有一些剛入行的菜鳥,我們有沒有乙個可以把大家組織到一起相互學習技術,討論問題的俱樂部社團呢?我第一次想到這個問題的時候,覺得應該會有吧,做it的這麼多,總會有好事者去做這件事情的。但是到網上蒐羅了半天沒有找到。倒是有個車庫咖啡,是創業者找...

社團那些事(2)

在程式那些事 1 中我已經寫了 我們軟體學校社團有很多 都有自己的學習地點 每個人都可以分到一台電腦桌 一根網線 其實網速慢的要死 不過我感覺很知足 社團是在教學樓下面的地下室 很大的 兩棟樓下面能容納300多人 當時我面試好多社團 包括筆試 竟然沒一家社團錄我 呵呵呵 可能我確實不擅長表達 人一多...