#include<cstdio>
#include<cstring>
int dis[505][505],t,n,sym[1000];
void init()
{
memset(sym,0,sizeof(sym));
}
int prim()
{
int ans = -1;
for(int i=0;i<n;i++)
{
int minn = 99999999,minnx;
for(int j=0;j<n;j++)
if(!sym[j]&&dis[0][j]<minn){
minn = dis[0][j];
minnx = j;
}
sym[minnx] = 1;
if(minn>ans)ans = minn;
for(int j=0;j<n;j++)
if(!sym[j]&&dis[0][j]>dis[minnx][j]){
dis[0][j] = dis[minnx][j];
}
}
return ans;
}
int main()
{
scanf("%d",&t);
while(t--)
{
init();
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&dis[i][j]);
printf("%d\n",prim());
}
return 0;
}
poj-2485-最小生成树prim算法模板
最新推荐文章于 2017-03-14 22:36:31 发布
本文介绍了一个使用C语言实现的Prim最小生成树算法。该程序通过读取顶点数量和边权重来构建图,并利用Prim算法找到连接所有顶点的最小生成树。通过多次扫描寻找未被加入树中的顶点与已加入顶点间的最小权重边来逐步构建最小生成树。

510

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



