POJ 1861 Network (Kruskal算法)
来源:互联网 发布:大数据时代的思维变革 编辑:程序博客网 时间:2024/09/21 09:01
这道题目其实是最小生成树的题目。
但是题目给的样例有误导嫌疑,所以可能比较难的看出来。
一开始读题目,看样例,看了很久,怎么对也好样例不一样。
后面只好仔细在看一遍题目。发现题目讲的是,把任意两个点连通起来。
那么这个就是最小生成树的定义。
于是就按照最小生成树的样子写了一下。最后过了
证明确实题目给的样例确实是错的。
好好读题目才是关键
最后输出的是,最小生成树最长边,边数,以及每一条边
#include<iostream>#include<algorithm>#include<functional>#include<cstdio>#include<cstring>#define maxn 150005using namespace std;struct node{int from,to,cost;}edge[maxn];int n,m,fa[10005];int k,ans[maxn];int mx,cnt;int cmp(struct node a,struct node b){return a.cost<b.cost;}//结构体从小到大排序void init()//并查集初始化{memset(edge,0,sizeof(edge));memset(ans,0,sizeof(ans));k=1;cnt=0;mx=-99999999;for(int i=1;i<=n;i++)fa[i]=i;}int getfa(int x)//找父亲节点{if(x==fa[x])return x;return fa[x]=getfa(fa[x]);}int merge(int u,int v)//如果可以合并就合并,再返回1{int t1,t2;t1=getfa(u);t2=getfa(v);if(t1!=t2){fa[t1]=t2;return 1;}return 0;}int main(){int i,j;while(scanf("%d%d",&n,&m)!=EOF){init();for(i=1;i<=m;i++)scanf("%d%d%d",&edge[i].from,&edge[i].to,&edge[i].cost);sort(edge+1,edge+m+1,cmp);//传的是地址//for(i=1;i<=m;i++)//printf("From:%d To:%d Cost:%d\n",edge[i].from,edge[i].to,edge[i].cost);for(i=1;i<=m;i++){//printf("ans=%d\n",merge(edge[i].from,edge[i].to));if(merge(edge[i].from,edge[i].to)){mx=max(edge[i].cost,mx);ans[k++]=edge[i].from;ans[k++]=edge[i].to;cnt++;}}printf("%d\n",mx);printf("%d\n",cnt);for(i=1;i<k;i+=2)printf("%d %d\n",ans[i],ans[i+1]);}return 0;}
阅读全文
0 0
- POJ 1861 NetWork (Kruskal算法)
- POJ 1861 Network (Kruskal算法)
- POJ 1861 Network(Kruskal)
- POJ 1861 Network(Kruskal)
- POJ 1861 Network (Kruskal)
- POJ 1861 Network(Kruskal)
- network 最小生成树 Kruskal 算法 poj 1861 zoj 1542
- Poj 1861 Network (模版kruskal)
- poj 1861 Network (kruskal)
- ZOJ 1542 / POJ 1861 Network (kruskal )
- poj 1861 Network (kruskal 最小生成树)
- POJ 1861 Network Kruskal优化模板
- POJ 1861 Network (Kruskal+并查集)
- POJ 1861 Network [最小生成树算法MST-kruskal 数据结构-并查集 union-find sets]
- poj 2349 Arctic Network (kruskal)
- POJ 2349 Arctic Network (Kruskal) .
- [POJ 2349] Arctic Network Kruskal
- POJ 2349(Kruskal) Arctic Network
- js实现身份证校验----Ctrl+c/Ctrl+v可用,无需改动
- break continue作用于外层循环
- Can not find scala.async.Async.{async, await}
- spring boot中的java配置中的注解
- linux下kill cpu占用高的程序
- POJ 1861 Network (Kruskal算法)
- 【MySQL集群】——在Windows环境下配置MySQL集群
- 互联网人员如何成功
- MySQL的一些其他插入数据的方式,顺便给大家脑补一点基本函数的使用
- win7+vs2010+opencv3.0.0+安装
- 三大框架的基础知识
- \r \t \n注意事项
- oracleday17(过程 函数 exec java中调用查找 包)
- 导入导出