關鍵:從最大的天數往前開始建立連通圖
思路:以天數為表頭建立鄰接表
取出最大和最小的天數,
從最大的天數開始往前計算,一直算到最小的天數,
如果某一天t將兩個不連通的小島連線起來則該天會收到**;如果某條邊連線的島是相連 ,則不做任何處理
已知n個點的最小連通圖的邊數最少為n-1條,當連線的邊數為n-1時所有島相連,也就是說在該天之前都不會收到** ,完成檢索
#include #include using namespace std;
#define maxn 10005
#define maxm 100005
#define maxt 100005
struct nodeedge[maxm];
int head[maxt],fa[maxn];
int n,m,t,ma,mi;
int cnt,ans,sum;
void add(int t,int a,int b)
; edge[cnt]=e;
head[t]=cnt++;
}void init(int n)
int find(int x)
void connected()
if (ans==n-1) //建立連線圖成功
}
if (p==1) sum++;
if (h==0) break;
} }
int main()
{ int t,a,b;
while (cin>>n>>m)
{ ma=0; mi=maxt;
cnt=0; ans=0; sum=0;
memset(head,-1,sizeof(head));
for (int i=0;i>a>>b>>t;
add(t,a,b);
if(t>ma) ma=t;
else if(t
歷屆試題 國王的煩惱 藍橋杯
問題描述 c國由n個小島組成,為了方便小島之間聯絡,c國在小島間建立了m座大橋,每座大橋連線兩座小島。兩個小島間可能存在多座橋連線。然而,由於海水沖刷,有一些大橋面臨著不能使用的危險。如果兩個小島間的所有大橋都不能使用,則這兩座小島就不能直接到達了。然而,只要這兩座小島的居民能通過其他的橋或者其他的...
歷屆試題 國王的煩惱 (藍橋杯)
問題描述 c國由n個小島組成,為了方便小島之間聯絡,c國在小島間建立了m座大橋,每座大橋連線兩座小島。兩個小島間可能存在多座橋連線。然而,由於海水沖刷,有一些大橋面臨著不能使用的危險。如果兩個小島間的所有大橋都不能使用,則這兩座小島就不能直接到達了。然而,只要這兩座小島的居民能通過其他的橋或者其他的...
藍橋杯 歷屆試題 國王的煩惱
好久沒練了,忽然感覺對並查集陌生了好多,今天專門找題來練一下才發現之前掌握的並查集太片面了。國王的煩惱,這個題大意是 n個島嶼,有m條大橋,每條大橋連線兩個島嶼,可能有兩個相同島嶼之間有多條大橋的情況。輸入 n,m,m行橋,每行包含 島嶼a,島嶼b,該橋剩餘工作的天數。說 每斷裂一所能夠導致原本兩座...