#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int dis[101][101],vis[101],n,i,j,min,farm,p,s;
while(cin>>n&&n)
{
memset(vis,0,sizeof(vis));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>dis[i][j];
vis[0]=1;
farm=1;
s=0;
while(farm!=n)
{
min=1000000;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(vis[i]==1&&vis[j]==0)
if(dis[i][j]<min)
{
min=dis[i][j];
p=j;
}
s+=min;
vis[p]=1;
farm++;
}
cout<<s<<endl;
}
return 0;
}poj1258 最小生成树(但是可以很简洁的写哦)
本文介绍了一个使用C++实现的最小生成树算法示例。该程序通过读取顶点之间的距离来构造图,并利用贪心策略逐步构建最小生成树。算法每次迭代选择未加入树中的最短边,直至所有顶点都被包含。
5万+

被折叠的 条评论
为什么被折叠?



