Kruskal算法初步
2024-09-01 08:39:44
2017-09-18 21:53:00
writer:pprp
代码如下:
/*
@theme: kruskal
@writer:pprp
@date:2017/8/19
@begin:21:19
@end:21:50
@declare:
*/ #include <bits/stdc++.h> using namespace std;
const int maxn = ;
const int INF = ;
int n , e;
struct node
{
int x, y, w;
};
vector<node> vt;
int dad[maxn];//每个结点的父亲集合 bool cmp(const node& n1, const node& n2)
{
return n1.w < n2.w;
} int getfather(int x)
{
if(x == dad[x])
return x;
dad[x] = getfather(dad[x]);
return dad[x];
} void kruskal()
{
for(int i = ; i <= n ;i++)
dad[i] = i;
int cnt = , ans = ;
for(int i = ; i <= e ;i++)
{
if(getfather(vt[i-].x)!=getfather(vt[i-].y))
{
ans += vt[i-].w;
dad[getfather(vt[i-].x)] = vt[i-].y;
cnt++;
if(cnt == n)
{
cout << ans << endl;
return ;
}
}
}
return ;
} int main()
{
freopen("in.txt","r",stdin);
cin >> n >> e;
for(int i = ; i < e; i++)
{
node newnode;
cin >>newnode.x >> newnode.y >> newnode.w;
vt.push_back(newnode);
}
sort(vt.begin(),vt.end(),cmp);
kruskal(); return ;
}
最新文章
- jquery.datatable.js与CI整合 异步加载(大数据量处理)
- PHP-Redis扩展使用手册(三)
- js 中使用el表达式 关键总结:在js中使用el表达式一定要使用双引号
- [Voice communications] 让音乐响起来
- windows下PHP5.5.6+Apache2.4.7配置
- 利用VBA查找excel中一行某列第一次不为空与最后一列不为空的列数
- iOS-绘图(Quartz2D)的简单使用(原创)
- JMX初体验
- AP模块的发票过账后关联对应的凭证编号。
- c#使用DocX给word添加目录TOC
- poj 3294 Life Forms(后缀数组)
- 实战 Spring MVC接入支付宝即时到账 (部分代码)
- php 7 正式发版
- poj1459 Power Network --- 最大流 EK/dinic
- 深入 理解 Statement 和 PreparedStatement
- IE7,8,9兼容性处理
- PHP面向对象编程 对象的基本概念 PHP面向对象的基本实践 PHP面向对象的高级实践 PHP面向对象的特殊实践
- TLD网络资源汇总--学习理解之(四)
- [Codeforces 920E]Connected Components?
- 如何向android studio中导入第三方类库