题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1233

题意描述:

输入n个城镇以及n*(n-1)/2条道路信息

计算并输出将所有城镇连通或者间接连通需要修建的最短道路的总长度

解题思路:

最小生成树问题模板题,使用克鲁斯卡尔算法即可。

AC代码:

 #include<stdio.h>
#include<algorithm>
using namespace std; struct edge
{
int u,v,w;
};
struct edge e[];
int cmp(struct edge x,struct edge y)
{
return x.w < y.w;
}
int f[];
int merge(int u,int v);
int getf(int u);
int main()
{
int i,n,m,sum,count;
while(scanf("%d",&n),n != )
{
m=n*(n-)/;
for(i=;i<=m;i++)
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
sort(e+,e+m+,cmp);
for(i=;i<=n;i++)
f[i]=i;
count=;
sum=;
for(i=;i<=m;i++)
{
if( merge(e[i].u,e[i].v) )
{
count++;
sum += e[i].w;
}
if(count==n-)
break;
}
printf("%d\n",sum);
}
return ;
}
int merge(int u,int v)
{
int t1,t2;
t1=getf(u);
t2=getf(v);
if(t1 != t2)
{
f[t2]=t1;
return ;
}
return ;
}
int getf(int u)
{
if(f[u]==u)
return u;
else
{
f[u]=getf(f[u]);
return f[u];
}
}

最新文章

  1. DevExpress 隐藏Ribbon中barbuttonItem的SuperTip(1)
  2. JS写入日志
  3. 最好用的JQuery插件集合以及组合拳
  4. sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法
  5. HTML5储存
  6. [原]ubuntu下制作openstack-havana源
  7. C#与C++函数调用
  8. Anyterm - Introduction
  9. Chapter 21_5.1 URL编码
  10. java计数器CountDownLatch
  11. 安装SqlServer2008后vs中dev控件消失
  12. TIJ笔记:内部类的初始化
  13. ping通但打不开网页
  14. HAOI 2018 染色(容斥+NTT)
  15. [CodeForces - 447A] A - DZY Loves Hash
  16. Mockito 的使用
  17. 新概念 Lesson 1 Excuse me!
  18. Python Pygame (3) 界面显示
  19. 两种ajax的方法
  20. Java 对称加密

热门文章

  1. C# 命名空间和程序集
  2. IOS 看懂此文,你的block再也不需要WeakSelf弱引用了!
  3. Linux(Cent OS7.2)下启动停止memcached方法及ps命令使用讲解
  4. H2Engine游戏服务器设计之属性管理器
  5. css半透明边框
  6. left join,right join,inner join
  7. IRP的同步
  8. CSS(一) 引入方式 选择器 权重
  9. 简易安卓APP
  10. MIPI协议-DSI