题目链接:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=384#problem/J
Agri-Net
#include <stdio.h>
#include < string.h>
int dis[ 110][ 110];
int vist[ 110];
int main()
{
int i,j,t,n;
while (~scanf( " %d ",&n))
{
__int64 s= 0;
for (i= 1;i<=n;i++)
for (j= 1;j<=n;j++)
scanf( " %d ",&dis[i][j]);
memset(vist, 0, sizeof(vist));
vist[ 1]= 1;
t=n- 1;
while (t--)
{
int m= 100010;
int pos;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[ 1][i]<m)
{
pos=i;
m=dis[ 1][i];
}
vist[pos]= 1;
s+=m;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[pos][i]<dis[ 1][i])
dis[ 1][i]=dis[pos][i];
}
printf( " %I64d\n ",s);
}
return 0;
}
#include < string.h>
int dis[ 110][ 110];
int vist[ 110];
int main()
{
int i,j,t,n;
while (~scanf( " %d ",&n))
{
__int64 s= 0;
for (i= 1;i<=n;i++)
for (j= 1;j<=n;j++)
scanf( " %d ",&dis[i][j]);
memset(vist, 0, sizeof(vist));
vist[ 1]= 1;
t=n- 1;
while (t--)
{
int m= 100010;
int pos;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[ 1][i]<m)
{
pos=i;
m=dis[ 1][i];
}
vist[pos]= 1;
s+=m;
for (i= 2;i<=n;i++)
if (!vist[i] && dis[pos][i]<dis[ 1][i])
dis[ 1][i]=dis[pos][i];
}
printf( " %I64d\n ",s);
}
return 0;
}
本文介绍了一个基于最小生成树算法解决的具体问题——Agri-Net。该问题要求构建一个连接所有节点的网络并使总成本最小。通过使用类似Prim算法的方法,文章详细展示了如何遍历矩阵并逐步构建最小生成树的过程。

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



