HDOJ 1863 暢通工程 普利姆演算法

2021-06-23 09:45:35 字數 651 閱讀 8127

普利姆演算法是以乙個點為源點,找該源點到下乙個點的最短距離

#include#include#define inf 99999

using namespace std;

int mp[110][110];

int dis[110];

bool vis[110];

//普利姆演算法

void prim(int m)

vis[1]=1;

for(i=1;imp[k][j])

dis[j]=mp[k][j];

}//以k點為源點,用k點到各點的距離更新dis陣列

}int flag=0;

for(i=1;i<=m;i++)

}//若有沒被標記的點,則不能暢通

if(!flag)

printf("%d\n",sum);

else

printf("?\n");

}int main()

}//mp陣列初始化,開始為散落的、無關聯的點。

//除自身到自身距離為0外,其餘都為無窮。

int a,b,c;

for(i=1;i<=n;i++)

}prim(m);

}return 0;

}

hdoj1863 暢通工程

此題與hdoj1233解法一樣 include include using namespace std int city 101 struct road road road 5051 int cmp const road a,const road b int find const int n int...

HDOJ1863 暢通工程

新學習了prim演算法,把之前的dijkstra改了改,d陣列用來存上乙個距離當前節點最近的長度,而不是源點到當前最近的長度就可以了。初始化d為inf,如果條件不夠那和算出來必定 inf 沒考慮溢位,因為我定義的inf並不是很大 題目小坑,把n和m輸入順序反了一下。1 pragma warning ...

HDU 1863 暢通工程

include include include using namespace std const int maxn 5000 5 int n,m,ans,cnt bool flag struct streat edge maxn int root 105 int find int x void k...