AcWing 1140. 最短网络
原题链接
简单
作者:
YikN
,
2021-07-15 17:44:12
,
所有人可见
,
阅读 199
C++ 代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
int g[N][N],n;
int dist[N];
bool str[N];
int prim()
{
int res=0;
memset(dist,0x3f,sizeof dist);
dist[1]=0;
for(int i=1;i<=n;i++)
{
int t=-1;
for(int j=1;j<=n;j++)
{
if(!str[j]&&(t==-1||dist[t]>dist[j]))
{
t=j;
}
}
res+=dist[t];
str[t]=true;
for(int j=1;j<=n;j++)
{
if(dist[j]>g[t][j])
{
dist[j]=g[t][j];
}
}
}
return res;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>g[i][j];
}
}
cout<<prim()<<endl;
return 0;
}