题意:

求出连接各个村庄最小的公路总长度,把最小公路总长度求出来。

思路:

最小生成树原理,带入数据求得。

代码:

prim:

#include<iostream>
#include<cstring> using namespace std;
#define inf 0x3f3f3f3f int main()
{
int n, i,j,b,c,d,min,a[][],visit[],low[];
while(cin>>n,n)
{
memset(visit,,sizeof(visit));
int temp=n*(n-)/;
while(temp--)
{
cin>>b>>c>>d;
a[b][c]=a[c][b]=d;
}
visit[]=;int pos=; //第一次给low赋值
for(i=;i<=n;++i)
{
if(i!=pos) low[i]=a[pos][i];
}
int result=; //运行m-1次,因为至少需要m-1次才能把所有的城市连通
for(i=;i<n;++i)
{
min=inf;
for(j=;j<=n;++j)
{
if(!visit[j]&&min>low[j])
{
min=low[j];
pos=j;
}
}
result+=min;
visit[pos]=;
for(j=;j<=n;++j)
{
if(!visit[j]&&low[j]>a[pos][j])
{
low[j]=a[pos][j];
}
}
}
cout<<result<<endl;
}
return ;
}

krusual:

#include<iostream>
#include<cstdio>
#include<algorithm> using namespace std; struct node
{
int u,v,w;
}; node arr[];
int per[],n; bool cmp(node a,node b)
{
return a.w<b.w;
} void init()
{
for(int i=;i<=n;++i)
{
per[i]=i;
}
} int find(int x)
{
if(x==per[x]) return x;
return per[x]=find(per[x]);
} bool join(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
{
per[fx]=fy;
return ;
}
return ;
} int main()
{
int m;
while(cin>>n,n)
{
init();
m=n*(n-)/;
for(int i=;i<m;++i)
{
cin>>arr[i].u>>arr[i].v>>arr[i].w;
}
sort(arr,arr+m,cmp);
int sum=;
for(int i=;i<m;++i)
{
if(join(arr[i].u,arr[i].v))
{
sum+=arr[i].w;
}
}
cout<<sum<<endl;
}
return ;
}

最新文章

  1. PHP的FastCGI
  2. VBA 获取Sheet最大行
  3. 函数Curry化
  4. PuzzleGame部分核心算法
  5. Android RecyclerView的基本使用
  6. Looper
  7. ubunt1204安装配置vsftp
  8. linux下so动态库一些不为人知的秘密
  9. UIButton和UIImageView的区别
  10. javascript. String方法扩张.
  11. 开启本地MySql数据库远程连接
  12. 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记
  13. 后端开发实践——Spring Boot项目模板
  14. Spiring系列__03IOC补充
  15. mui的switch开关的应用
  16. layui 数据表格+分页+搜索+checkbox+缓存选中项数据
  17. vs 2017 IIS EXPRESS 增加局域网访问
  18. windows 7 提示缺少D3DCOMPILER_47.dll的正确解决方法
  19. AWS CLI以及AWS S3 SYNC命令行使用
  20. git-it 教程,一些git知识点。/ 如何解决merge conflict/ 如何使用Github Pages./Git术语表

热门文章

  1. js break和continue
  2. Apache虚拟主机
  3. Java中子类和父类相关方法的执行顺序
  4. HS BDC HDU - 3472(混合欧拉路径)
  5. day5 continue 和 break的区别
  6. day11 map函数
  7. day11 作用域
  8. 1.Zabbix报错信息:It probably means that the systems requires more physical memory.
  9. 青蛙跳台阶(C、Python)
  10. POJ1163(简单的DP)