HDU 1233 还是畅通工程(模板——克鲁斯卡尔算法)
2024-08-29 12:34:47
题目链接:
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];
}
}
最新文章
- DevExpress 隐藏Ribbon中barbuttonItem的SuperTip(1)
- JS写入日志
- 最好用的JQuery插件集合以及组合拳
- sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法
- HTML5储存
- [原]ubuntu下制作openstack-havana源
- C#与C++函数调用
- Anyterm - Introduction
- Chapter 21_5.1 URL编码
- java计数器CountDownLatch
- 安装SqlServer2008后vs中dev控件消失
- TIJ笔记:内部类的初始化
- ping通但打不开网页
- HAOI 2018 染色(容斥+NTT)
- [CodeForces - 447A] A - DZY Loves Hash
- Mockito 的使用
- 新概念 Lesson 1 Excuse me!
- Python Pygame (3) 界面显示
- 两种ajax的方法
- Java 对称加密