zoj 3261 逆向並查集

2022-07-26 15:03:13 字數 1002 閱讀 9215

很明顯是逆向的並查集,建立邊再銷毀,思路也很巧妙的逆向思考~

如果正著一一銷毀,相當於倒著一一建邊。

所以儲存q次提問,最後倒著來一一建邊。

在此之前先把沒有銷毀的邊全部建好~細節power能量注意一下~

view code

1 #include 2 #include 3 #include 

4 #include 5 #include 6

using

namespace

std;78

const

int n=50005;9

intn,m,i,j;

10int

power[n];

11int

father[n];

12int g[n][3

];13

intans[n],cnt;

14 mapint,int>,int>m;

1516

int find(int

x)20

return

father[x];21}

2223

void merge(int a,int

b)30

intmain()

4546 scanf("

%d",&q);

47for(i=0;i)else61}

6263 mapint,int>,int>::iterator it;

64for(it=m.begin();it!=m.end();it++)69}

70 cnt=0;71

while(q--)else80}

81if(k++) puts(""

);82

while(cnt--)

83 printf("

%d\n

",ans[cnt]);84}

85return0;

86 }

逆向並查集(ZOJ 3261)

與並查集不同,給出乙個圖中原有的一些邊,然後給出操作,操作不是向圖中新增邊,而是在已有的邊上,將邊刪除。對於該種情況,需要把首先讀入所有操作,把要求刪除的邊全部刪除,再按照從後往前的順序處理操作,這樣刪邊操作又重新轉化為了添邊的操作。例題 zoj3261 connections in galaxy ...

zoj3261變形並查集

需要變形的並查集,這題錯了好久,一直沒a掉,終於在重寫第三次的時候a了 先儲存資料,把不需要拆分的邊合併,逆向計算,需要拆分時就合併,之前不知道為啥寫搓了,tle好久 include include include include include include include include in...

zoj3261 並查集 略有變形

題意 有n個星球,每個星球有一定的power值,某些星球是直接或間接相連的。當某個星球想求助時會找到相連的裡面的power值最大而且大於自己的乙個星球。先在給定這些power值並給定兩兩相連的資訊,然後又q個操作,destroy a b是刪除a b直接相連的邊 保證存在 query a求向誰求助,如...