hdu 1233
来源:互联网 发布:去除ghost预装软件 编辑:程序博客网 时间:2024/06/05 18:42
上午上课之前做了一下最小生成树题目,本来想是用来练练手的,预计20分钟一定可以OK的,哪知道让我纠结了一上午啊。。。
这是一道很普通的ACM题目,没想到并查集数组定义出错了,原来设定的是从0开始的,可是题目中村子确实从1开始的,提交后出错了好多次都是数组越界,真是蛋疼啊。。。
又一次成功的栽在了初始化0和1的问题上面,也望过来人注意一下,要明确其对应关系。
# include<stdio.h># include<string.h>int id[6000],eu[6000],ev[6000],ew[6000],p[101];void init(int n,int m){int i;for(i=1;i<=n;i++)p[i]=i;for(i=0;i<m;i++)id[i]=i;}int find(int x){if(x!=p[x]){p[x]=find(p[x]);}return p[x];}int cmp(const void *a,const void *b){int c,d;c=*((int *)a);d=*((int *)b);return ew[c]-ew[d];}int kruskal(int n,int m){int i,j,k,ret=0;init(n,m);qsort(id,m,sizeof(id[0]),cmp);for(i=1,j=-1;i<n;i++){while(k=id[++j],find(eu[k])==find(ev[k]));ret+=ew[k];p[find(eu[k])]=find(ev[k]);}return ret;}void main(){int n,m,i;while(scanf("%d",&n)&&n){m=n*(n-1)/2;for(i=0;i<m;i++){scanf("%d%d%d",&eu[i],&ev[i],&ew[i]);}printf("%d\n",kruskal(n,m));}}
- hdu 1233
- hdu 1233
- hdu 1233
- HDU 1233
- hdu 1233
- hdu-1233
- hdu 1233
- HDU 1233
- HDU 1233
- HDU 1233
- HDU 1233
- HDU 1233
- hdu 1233
- HDU 1233
- hdu 1233
- hdu 1233 kruskal
- HDU-1233(prim写法)
- HDU 1233 Prim
- CentOS 6.0 安装配置LAMP(Apache+MySQL+PHP)
- js屏蔽右键菜单代码
- jdk1.5新特性5之枚举之枚举类型的应用
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- Android SDK开发包国内下载地址
- hdu 1233
- C++语言 通过类模板实现加法计算器
- C++中发生“"0x54402fed (msvcr100d.dll) 处有未经处理的异常:”内存方面的错误的解决方案
- C# WinForm捕获全局异常
- [LeetCode]Container With Most Water
- 一些linux书及资料
- C++语言 获取EXE文件的属性详细信息
- x86机器(VMware安装Linux系统)启动日志、日志分析、故障分析
- 主机硬件问题导致rac节点重启