L2 013 紅色警報 (25 分)(並查集)

2021-09-10 09:19:18 字數 1031 閱讀 8975

【解題思路】

每一次都要重新判斷一下需要連線的道路變化有無影響

有影響的情況比較難找,那就直接先判斷沒有影響的情況

就是等於前集合數目等於現集合數目或原集合數目+1等於現集合數目(因為題意,若該國本來就不完全連通,是**的k個區域,而失去乙個城市並不改變其他城市之間的連通性,則不要發出警報)

這樣即使去掉當前結點也無礙

#include#include#include#includeusing namespace std;

#define ll long long

#define maxn 5020

int father[maxn];

int vis[maxn];

struct node node[maxn];

void init()

}/*int findfather(int x)

return x;

}*/int findfather(int x)

void union(int a,int b)

int main()

int num=0;

for(int i=0;iint k;

scanf("%d",&k);

int num1=0;

while (k--)

num1=0;

int h;

scanf("%d",&h);

vis[h]=1;

for(int i=0;ifor(int i=0;iif(num1==num||(num+1==num1))//不改變其他城市的連通性

printf("city %d is lost.\n",h);

else

printf("red alert: city %d is lost!\n",h);

num=num1;

}num=0;

for(int i=0;iif(num==n)

printf("game over.\n");

}return 0;

}

L2 013 紅色警報 25分 並查集

戰爭中保持各個城市間的連通性非常重要。本題要求你編寫乙個報警程式,當失去乙個城市導致國家被 為多個無法連通的區域時,就發出紅色警報。注意 若該國本來就不完全連通,是 的k個區域,而失去乙個城市並不改變其他城市之間的連通性,則不要發出警報。輸入格式 輸入在第一行給出兩個整數n 0 n 500 和m 5...

L2 013 紅色警報(並查集 )

l2 013.紅色警報 時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 戰爭中保持各個城市間的連通性非常重要。本題要求你編寫乙個報警程式,當失去乙個城市導致國家被 為多個無法連通的區域時,就發出紅色警報。注意 若該國本來就不完全連...

L2 013 紅色警報 (25 分)

戰爭中保持各個城市間的連通性非常重要。本題要求你編寫乙個報警程式,當失去乙個城市導致國家被 為多個無法連通的區域時,就發出紅色警報。注意 若該國本來就不完全連通,是 的k個區域,而失去乙個城市並不改變其他城市之間的連通性,則不要發出警報。輸入在第一行給出兩個整數n 0 n 500 和m 5000 分...