摘要: 这道题一开始的思路不过严谨,忽略 了一种情况,悲剧,本想一次过的这题不难,跟前面的某一到题目类似,不过不是求集合的元素个数,而是求有多少个集合具体思路很简单,在代码中……#include<stdio.h>#define MAXN 50010int f[MAXN],r[MAXN],n,num;int find(int x){ if(x!=f[x]) f[x]=find(f[x]); return f[x];}void Union(int x,int y){ int a=find(x); int b=find(y); if(a==b)//若父节点相同,则表示都出现过了,不同,则表示有一 阅读全文
posted @ 2011-05-06 11:59 枕边梦 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 这题,额,思路很好理解,说难其实也不难,代码也很好实现,就是慢了一点,不知道大牛是怎么过的,十分的好奇ing//题意:题目给出 n 台电脑,距离 d,和各台电脑的坐标(x,y)。电脑要通信要满足两个条件:// 1 电脑被修好,2 电脑之间的距离不超过距离 d 。输入 O p 时代表电脑 p 被修好,输入 S p q 时//代表测试电脑 p 与 q 之间是否可以通信。//思路:用到并查集。如果修好的电脑和已经被修好的电脑之间的距离小于 d ,则合并。//最后判断两台电脑是否可以通信就通过判断电脑是否被修好,根结点是否相等。#include<stdio.h>#include<ma 阅读全文
posted @ 2011-05-06 10:50 枕边梦 阅读(214) 评论(0) 推荐(0) 编辑