摘要: 首先要判断能否构成生成树,刚开始的思路是用hash遍历城市,看是否所有的城市都记录进取,被测试数据误导,如果给这组数据(1,2)(3,4)这么没办法构成单树。#include#includeconst int INF=0x7fffffff;const int MAXN=110;int hash[MA... 阅读全文
posted @ 2012-08-07 20:21 calmound 阅读(287) 评论(1) 推荐(0) 编辑
摘要: 水题:还是wa了三次。主要问题是行数是n*(n-1)/2,刚开始没有审题,其次直接把结果存储在n里头,导致城市数目发生了改变#includeconst int MAXN=500;const int INF=0x7fffffff;int map[MAXN][MAXN];int dist[MAXN];i... 阅读全文
posted @ 2012-08-07 20:19 calmound 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 还是寻求father[i]=i代表几个集合,还有初始化MAXN不能有等于,Make_seth函数再次忘记写了#includeconst int MAXN=1010;int father[MAXN],rank[MAXN];void Make_set(){ for(int i=1;irank[y]... 阅读全文
posted @ 2012-08-07 10:57 calmound 阅读(189) 评论(0) 推荐(0) 编辑
摘要: #includeconst int MAXN=110;const int INF=0x7fffffff;int n;//几个城市int dist[MAXN];//dist[i]表示i向外延伸的最短边长int map[MAXN][MAXN];//储存a->b之间的边权值int pre[MAXN];//... 阅读全文
posted @ 2012-08-07 10:30 calmound 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1.dist[n]并不是记录该最小生成树的最小权值2.两个for(j)循环的意义不一样,第一个是寻找与k点相邻的最小边,第二个是更新与k点相邻的边,当然dist依旧会存储着以前点k‘响铃的边,比如说第一个初始化的循环,第一个dist存储这与起点相邻的边,而这些边一次性用不完。http://sjjg.... 阅读全文
posted @ 2012-08-07 10:28 calmound 阅读(224) 评论(0) 推荐(0) 编辑
摘要: #include#includeconst int MAXN=10000010;int father[MAXN],hash[MAXN];void Make_set(){ for(int i=0;irank[y]) father[y]=x; else { if(rank... 阅读全文
posted @ 2012-08-07 09:12 calmound 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 判断树是否唯一1.只有一个根节点,(1)在一棵树上一个根节点。1 2 3 2就是两个根节点(1)只有一棵树2.不成环,入度不大于1由于数组运行超界导致wa,这是老毛病了 还一直错#includeconst int MAXN=1000100;int father[MAXN],rank[MAXN];st... 阅读全文
posted @ 2012-08-07 08:04 calmound 阅读(192) 评论(0) 推荐(0) 编辑