POJ 1258 lightblueme Agri Net angry!89次的失误终于得到最后的成功
来源:互联网 发布:淮北网络玩家主题酒店 编辑:程序博客网 时间:2024/06/05 11:32
低级错误,困扰了我整整两天!kruskal方法用于求最小生成树,对于属于不同set的节点进行合并时需要找到相应的set的根节点root1和root2,将root1的父节点指针指向root2或者相反。切莫只是改变当前节点的指针。就是这个低级的错误是我同提交了89次才终于成功!89次!!
#include <stdio.h>#include <stdlib.h>#define NUM 105typedef struct ee{int from;int to;int cost;}EdgeNode;int cmp(const void * a,const void * b){return (*((EdgeNode *)a)).cost-(*((EdgeNode *)b)).cost;}EdgeNode edge[NUM*NUM];int father[NUM];void makeset(){for(int k=0;k<NUM;k++){father[k]=k;}}int findroot(int a){if(father[a]!=a){father[a]=findroot(father[a]);}return father[a];}int main(){int w;while(scanf("%d",&w)!=EOF){int edgenu=w*(w-1)/2;int edgeindex=0;for(int i=0;i<w;i++){for(int j=0;j<w;j++){int l;scanf("%d",&l);if(i>j){edge[edgeindex].from=i;edge[edgeindex].to=j;edge[edgeindex].cost=l;edgeindex++;}}}qsort(edge,edgenu,sizeof(EdgeNode),cmp);makeset();int edgenum=0;int su=0;int index;for(index=0;index<=edgenu;index++){int cost=edge[index].cost;int from=edge[index].from;int to=edge[index].to;from=findroot(from);to=findroot(to);if(from!=to){su+=cost;father[from]=to;++edgenum;if(edgenum==w-1)break;}}printf("%d\n",su);}return 0;}
- POJ 1258 lightblueme Agri Net angry!89次的失误终于得到最后的成功
- poj 1088 lightblueme 最佳的滑雪路径
- 最后的成功源于N次失败
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- poj 1258-Agri-net
- poj 1258 Agri-Net
- poj 1258 Agri-Net
- POJ+1258++Agri-Net
- Poj 1258 Agri-Net
- poj 1258 Agri-Net
- poj 1258 Agri-Net
- poj 1258 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- poj-1258-Agri-Net
- 选择排序小总结。
- 如何解决 linux 操作系统显示中文乱码问题?
- android 颜色
- 结交“混世魔猴”
- 为什么负逻辑可以抗串模干扰
- POJ 1258 lightblueme Agri Net angry!89次的失误终于得到最后的成功
- JAVA代码(三)
- HTTP与HTTPS区别
- C++ 对象切割(Object slicing )与虚拟函式 [大三TJB_708]
- 调用DISCUZ自带的文本编辑器
- 算法学习笔记----归并排序
- VMWare中安装VMWare Tools 并设置共享目录
- 程序判断大端小端问题
- Python 获得命令行参数的方法