prim

时间:2023-03-08 15:57:15

prim算法很难,但是我也把他写出来了。usaco3.1.1

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n,a[101][101],d[101],ans=0;//距离ok点的距离
bool v[101]={0};
cin >> n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin >> a[i][j];
memset(d,0x3f,sizeof(d));
d[1]=0;
for(int i=1;i<=n;i++)
{
int x=0x3f3f3f3f,pos=0;
for(int j=1;j<=n;j++)
if(d[j]<x&&v[j]==0)
{
x=d[j];
pos=j;
}
v[pos]=true;
ans+=x;
for(int j=1;j<=n;j++)
if(d[j]>a[pos][j]&&v[j]==0)
d[j]=a[pos][j];
}
cout << ans << endl;
return 0;
}