雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年2月27日

摘要: 把点与点的关系保存在连接矩阵里就好了,如果距离小于等于规定距离的话就赋值为1然后不断做(做符合条件)合并操作即可……View Code #include<stdio.h>#define N 1005int f[N];int d;int ji[N];struct data { int x,y;}p[N];bool map[N][N];int dis(data a,data b){ int temp=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); if(temp<=(d*d)) return 1; return 0;}int find(int p 阅读全文

posted @ 2011-02-27 18:51 huhuuu 阅读(160) 评论(0) 推荐(0) 编辑

摘要: 这道题目,理解了好久,其实只要把关系图画一下,有些概念自然就知道了……当然也使我明白了,并查集因为通过路径压缩后,一个节点的find()过程,最多需要2次递归,最多一次修改……这样题目就理解了……View Code #include <stdio.h>#define max 50000+5int f[max];int r[max];/*rank[x]表示father[x]与x的关系rank[x] == 0 表示father[x]与x是同类rank[x] == 1 表示x吃father[x]rank[x] == 2 表示father[x]吃x*/void make_set(int x 阅读全文

posted @ 2011-02-27 15:33 huhuuu 阅读(310) 评论(0) 推荐(0) 编辑