#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int _map[305][305];
int m;
int cost[305];
int vis[305];
int dist[305];
int prime(int x)
{
int index,sum=0;
vis[x]=1;
for (int i=1;i<=m;i++)
dist[i]=_map[x][i];
for (int i=2;i<=m;i++)
{
int mincost=100000000;
for (int j=1;j<=m;j++)
{
if (!vis[j]&&dist[j]<mincost)
{
mincost=dist[j];
index=j;
}
}
vis[index]=1;
sum+=mincost;
for (int j=1;j<=m;j++)
{
if (!vis[j]&&dist[j]>_map[index][j])
{
dist[j]=_map[index][j];
}
}
}
return sum;
}
int main()
{
cin>>m;
for (int i=1;i<=m;i++)
for (int j=1;j<=m;j++)
cin>>_map[i][j];
cout<<prime(1);
return 0;
}
prime算法(最小生成树模板)
最新推荐文章于 2023-05-22 11:23:45 发布