您的位置:首页 > 其它

usaco Agri-Net

2015-09-04 20:14 281 查看
稠密图的最小生成树

使用prim算法/*
ID:zhdxzwj1
LANG:C++
PROG:agrinet
*/
#include <bits/stdc++.h>
int flag[102][102];
int seen[102]={0};
int parent[102];
int dist[102]={0};
int main()
{
freopen("agrinet.in","r",stdin);
freopen("agrinet.out","w",stdout);
int n;
scanf("%d",&n);
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&flag[i][j]);
}

parent[0]=-1;
seen[0]=1;
for(i=0;i<n;i++)
{
if(flag[0][i]>=0)
dist[i]=flag[0][i];
else
dist[i]=INT_MAX;
}i=0;
int path=0;
while(1)
{
int mi=INT_MAX;
for(k=0;k<n;k++)
if(seen[k]==0&&dist[k]<mi)
{
mi=dist[k];
j=k;
}

if(j==i)
break;
path+=mi;
seen[j]=1;
i=j;
for(k=0;k<n;k++)
{
if(seen[k]==0)
dist[k]=std::min(flag[j][k],dist[k]);
}
}
printf("%d\n",path);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  usaco