【解題思路】
每一次都要重新判斷一下需要連線的道路變化有無影響
有影響的情況比較難找,那就直接先判斷沒有影響的情況
就是等於前集合數目等於現集合數目或原集合數目+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 分...