HDU 1875 暢通工程再續

2021-07-17 00:08:51 字數 1217 閱讀 3077

題目大意:其實就是求最小生成樹 不過唯一坑的地方在於只要求實現任意2個小島之間有路通即可,至少2個島連通 如果2個島不通才輸出oh

解題思路:標準的最小生成樹的模板 限制條件2島距離在10~1000公尺之間

普利姆演算法

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define ll long long

#define sc(x) scanf("%d",&x)

#define dsc(x,y) scanf("%d%d",&x,&y)

#define pr(x) printf("%d\n",x)

#define for(i,n,o) for(int i=o;i<=n;i++)

#define lcr(a,b) memset(a,b,sizeof(a))

#define inf 1<<29

#define n 104

struct node

q[n];

double mp[n][n],sum;

int vis[n],n,cnt;

double dis[n];

void pri()

vis[1]=1;

for(i,n-1,1)

}if(to==-1)

return ;

vis[to]=1;

sum+=minn;

for(j,n,1)

}return ;

}int main()

}if(cnt<2)

else

}return

0;}

克魯斯卡爾演算法

hdu 1875 暢通工程再續

題目 又是最小生成樹。一開始錯了幾次。我以為是當兩段路大於1000或者小於10就會不符合要求。其實是讀錯題意了。當兩段路大於1000或者小於10。只應該把這段路變成死路。下面是ac include includeusing namespace std define n 9999999 int n d...

hdu1875 暢通工程再續

題目鏈結 此題是求最小生成樹的變形,需要從點和座標中抽象出邊的資訊,再利用kruskal求得最小生成樹,不過要注意邊是否符合要求,不然無法使用。看最後能否構成最小生成樹 include include include includeusing namespace std struct edge bu...

HDU 1875 暢通工程再續

題意 相信大家都聽說乙個 百島湖 的地方吧,百島湖的居民生活在不同的小島中,當他們想去其他的小島時都要通過劃小船來實現。現在 決定大力發展百島湖,發展首先要解決的問題當然是交通問題,決定實現百島湖的全暢通!經過考察小組rprush對百島湖的情況充分了解後,決定在符合條件的小島間建上橋,所謂符合條件,...