普利姆演算法是以乙個點為源點,找該源點到下乙個點的最短距離
#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...