【裸最小生成树】 模板 poj 1258

时间:2023-03-08 23:45:26
【裸最小生成树】  模板 poj 1258
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define MAX 102
void read();
using namespace std;
int map[MAX][MAX],best[MAX],n;
bool visit[MAX];
int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
memset(visit,false,sizeof(visit));
read();
int ans=,k;
for(int i=;i<=n;i++)
{
best[i]=map[][i];
}
visit[]=true;
while()
{
int min= << ;
k=;
for(int i=;i<=n;i++)
{
if(!visit[i] && best[i]<min)
{
min=best[i];
k=i;
}
}
if(k==)break;
ans+=min;
visit[k]=true;
for(int i=;i<=n;i++)
{
if(!visit[i] &&map[k][i]<best[i])
{
best[i]=map[k][i];
}
}
}
cout << ans << endl;
}
return ;
}
void read()
{
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
scanf("%d",&map[i][j]);//输入邻接矩阵
}
}
}