克鲁斯卡尔模版
来源:互联网 发布:小米聊天软件 编辑:程序博客网 时间:2024/04/28 04:16
这是一个基本的克鲁斯卡尔代码,我贴在这里,为了以后更好的学习
代码如下:
#include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<algorithm>using namespace std;const int maxn = 1001;int pre[maxn];struct Edge{ int u,v; int cost;};bool operator < (const Edge &a,const Edge &b){ return a.cost<b.cost;}vector<Edge>edges;void add(int a,int b,int v){ Edge e; e.u=a; e.v=b; e.cost=v; edges.push_back(e);}int find(int a){ return a==pre[a]?a:pre[a]=find(pre[a]);}void merge(int a,int b){ int fa=find(a); int fb=find(b); if(fa!=fb) pre[fa]=fb;}int Kruskal(int n){ int res=0,count=0; sort(edges.begin(),edges.end()); for(int i=0;i<edges.size();i++){ Edge e=edges[i]; if(find(e.u)==find(e.v))continue; merge(e.u,e.v); res+=e.cost; count++; } if(count!=n-1)return -1; return res;}int main(){ int n,m; while(cin>>n>>m){ edges.clear(); for(int i=1;i<=m;i++){ pre[i]=i; int a,b,v; cin>>a>>b>>v; add(a,b,v); } int res=Kruskal(n); if(res==-1)cout<<"no"<<endl; else cout<<"yes"<<endl; } return 0;}
0 0
- 克鲁斯卡尔模版
- 克鲁斯卡尔算法模版
- 克鲁斯卡尔算法
- 克鲁斯卡尔总结
- Kruskal(克鲁斯卡尔)
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔Kruskal
- 克鲁斯卡尔
- 克鲁斯卡尔
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- 克鲁斯卡尔算法
- Leetcode_AddTwoNumbers
- 程序员保持天天快乐的6个习惯
- PHP多线程批量采集下载图片
- Play Framework ajax集成使用
- Eclipse 的任务试图和标签
- 克鲁斯卡尔模版
- 事情要记住在软件开发
- 小米开源:站在巨人肩膀上的创新
- 让WPF应用程序支持多语言
- matlab调试
- Git fatal: Authentication failed
- java进制转换
- 1008. 数组元素循环右移问题 (20)
- KMP算法详解(贴链接)