P1546 [USACO3.1] 最短网络 Agri-Net

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int N=110;
int n;
int g[N][N];
int st[N];
int dist[N];

int prim()
{
    int res=0;
    memset(dist,0x3f,sizeof dist);
    for(int i=0;i<n;i++){
        int t=-1;
        for(int j=1;j<=n;j++){
            if(!st[j]&&(t==-1||dist[j]<dist[t])) t=j;
        }

        if(i) res+=dist[t];
        st[t]=true;

        for(int j=1;j<=n;j++){
            dist[j]=min(dist[j],g[t][j]);
        }
    }

    return res;

    
}

int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    cin>>n;

    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>g[i][j];
        }
    }

    cout<<prim()<<"\n";

    return 0;
    
}
posted @ 2026-03-19 22:41  AnoSky  阅读(2)  评论(0)    收藏  举报