#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=110;
const int inf=0x3f3f3f3f;
int n;
int g[N][N];
int dis[N],st[N];
int prim()
{
memset(dis, inf,sizeof dis);
int res=0;
for(int i=0; i<n; i++)
{
int t=-1;
for(int j=1; j<=n; j++)
{
if(!st[j]&&(t==-1||dis[t]>dis[j]))
{
t=j;
}
}
if(i&&dis[t]==inf)
return inf;
if(i)
res+=dis[t];
st[t]=1;
for (int j = 1; j <= n; j ++ )
dis[j] = min(dis[j], g[t][j]);
}
return res;
}
int main()
{
cin>>n;
memset(g,inf,sizeof g);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cin>>g[i][j];
if(g[i][j]==0)
g[i][j]=inf;
}
}
int t=prim();
cout<<t<<endl;
return 0;
}
pipi 1399(最小生成树prim)
最新推荐文章于 2025-05-19 18:59:47 发布