HDU-1863- 畅通工程(最小生成树,prim)
2017-07-02 15:32
387 查看
题目链接
题意:裸的最小生成树
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> #include<time.h> #include<set> #include<stack> #include<vector> #include<map> #define pi acos(-1) #define maxn 111111 #define maxm 11111 #define INF 0x3F3F3F3F #define eps 1e-8 #define pb push_back #define mem(a) memset(a,0,sizeof a) using namespace std; const long long mod = 1000000007; /**lyc**/ int n, m; int mp[222][222]; int vis[222]; int cost[222]; void init(void) { memset(mp, INF, sizeof mp); for (int i = 0; i <= 111; i++) { mp[i][i] = 0; } memset(vis, 0, sizeof vis); memset(cost, INF, sizeof cost); } int Prim() { cost[1] = 0; vis[1] = 1; int ans = 0; for (int i = 2; i <= n; i++) { cost[i] = mp[1][i]; } for (int i = 1; i < n; i++) { int minx = INF; int pos = 0; /**找离集合最近的点**/ for (int j = 1; j <= n; j++) { if (!vis[j] && cost[j] < minx) { minx = cost[j]; pos = j; } } //cout << pos << endl; if (pos == 0) { return -1; } ans += cost[pos]; vis[pos] = 1; /**加入并修改**/ for (int j = 1; j <= n; j++) { if (!vis[j] && mp[pos][j] < cost[j]) { //这里注意,已经把pos点给加入了,所以直接算,不用加原来的了 cost[j] = mp[pos][j]; } } } return ans; } int main() { while (scanf("%d%d", &m, &n) && (m != 0)) { init(); int a, b, x; for (int i = 1; i <= m; i++) { scanf("%d%d%d", &a, &b, &x); mp[a][b] = mp[b][a] = x; } //cout << "***" << endl; int ans = Prim(); if (ans == -1) { printf("?\n"); } else { printf("%d\n", ans); } } return 0; }
相关文章推荐
- 【最小生成树+Prim】杭电 hdu 1863 畅通工程
- HDU 1863 畅通工程(最小生成树,prim)
- HDU 1863 畅通工程 (最小生成树--Kruscal、Prim)
- hdu1863 畅通工程(最小生成树之prim)
- HDU 1863 畅通工程 (最小生成树Prim)
- HDU1863 畅通工程 【最小生成树Prim】
- HDU 1863 畅通工程(prim最小生成树)
- 【HDU-1863】畅通工程(最小生成树prim)
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- HDU-1863 畅通工程(最小生成树[Prim])
- hdu 1863畅通工程(prim最小生成树)
- hdu1863-畅通工程-最小生成树
- hdu1863-畅通工程 最小生成树的并查集实现方法
- HDU 1863 畅通工程(最小生成树prim算法)
- hdu 1863 畅通工程-----------最小生成树模板题
- 【HDU 1863】畅通工程(基础最小生成树,Kruskal算法)
- Graph Theory NO.8 HDU_1863_畅通工程_最小生成树
- hdu 1863 畅通工程 最小生成树
- HDOJ 1863 畅通工程 最小生成树 kruskal && prim
- HDU 1863 畅通工程 (最小生成树