题目链接:https://www.luogu.com.cn/problem/P1546
题目大意:
给你一个邻接矩阵,求它的最小生成树。
解题思路:
因为是邻接矩阵,用Prim算法求最小生成树写起来比较方便。
实现代码如下:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 110;
int n, g[maxn][maxn], cost[maxn], ans;
bool vis[maxn];
int main() {
    cin >> n;
    for (int i = 0; i < n; i ++)
        for (int j = 0; j < n; j ++)
            cin >> g[i][j];
    memset(cost, -1, sizeof(cost));
    cost[0] = 0;
    for (int i = 0; i < n; i ++) {
        int id = -1;
        for (int j = 0; j < n; j ++)
            if (!vis[j] && cost[j] != -1 && (id == -1 || cost[id] > cost[j]))
                id = j;
        vis[id] = true;
        ans += cost[id];
        for (int j = 0; j < n; j ++)
            if (!vis[j] && (cost[j] == -1 || g[id][j] < cost[j])) cost[j] = g[id][j];
    }
    cout << ans << endl;
    return 0;
}    
    
    








