poj 1838
http://poj.org/problem?id=1838
并查集,,,计算总共个数的模版。。。。。
#include <iostream>
#define maxn 16006
#include<algorithm>
using namespace std; struct node{
int x,y;
int index;
}q[maxn]; int f[maxn],rank[maxn],sum[maxn]; void init(int n){
for(int i=;i<=n;i++){
f[i] = i;
rank[i]=;
}
} bool cmp_x(node a, node b){
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
} bool cmp_y(node a,node b){
if(a.y==b.y)
return a.x<b.x;
return a.y<b.y;
}
bool cmp(int x, int y){
return x>y;
} int find(int x){
if(x!=f[x])
f[x] = find(f[x]);
return f[x];
} void unin(int x, int y){
int fx = find(x);
int fy = find(y);
if(fx==fy)
return;
if(rank[fx]>rank[fy]){
rank[fx] += rank[fy];//求共有多少节点
f[fy] = fx;
}
else {
rank[fy] += rank[fx];
f[fx] = fy; }
return ;
} int main()
{
int n , k;
while(cin>>n>>k){
init(n);
for(int i=;i<=n;i++){
cin>>q[i].x>>q[i].y;
q[i].index=i;
}
sort(q+,q++n,cmp_x);//合并x方向
for(int i=;i<n;i++){
if(q[i].x==q[i+].x&&q[i].y+==q[i+].y)
unin(q[i].index,q[i+].index);
}
sort(q+,q++n,cmp_y);//合并y方向
for(int i=;i<n;i++){
if(q[i].y==q[i+].y&&q[i].x+==q[i+].x)
unin(q[i].index,q[i+].index);
}
int cnt =;
for(int i=;i<=n;i++){//取出f[i]==i的节点
if(f[i]==i)
sum[cnt++] = rank[i];
}
sort(sum,sum+cnt,cmp);//找出k个
int ssum =;
for(int i=;i<k;i++)
ssum += sum[i];
cout<<ssum<<endl;
}
return ;
}
poj 1838的更多相关文章
- POJ 1838 Banana (并查集)
Description Consider a tropical forrest, represented as a matrix. The cell from the right top corner ...
- POJ1838
poj 1838 这道题主要是对并查集的考察,在这道题的解题过程中主要用到的算法就是并查集中的最基本的makeSet,findSet,unionSet 即前篇文章中所提到的: makeSet(Elem ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- POJ题目分类(转)
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
随机推荐
- selenium的config.ini
config.ini # What WebDriver to use for the tests#driver=phantomjs#driver=firefoxdriver=chrome#driver ...
- ecshop删除商品函数
/** * 从回收站删除多个商品 * @param mix $goods_id 商品id列表:可以逗号格开,也可以是数组 * @return void */ function delete_goods ...
- uva 10404 Bachet's Game(完全背包)
题目连接:10404 - Bachet's Game 题目大意:由一堆石子, 给出石子的总数, 接下来由stan和ollie两个人玩游戏,给出n, 在给出n种取石子的方法(即为每次可取走石子的数量), ...
- iOS 自定义各类bar的属性
在iOS应用开发中,经常需要为导航栏和标签栏设置相同的主题,一个一个去设置的话,就太麻烦了,可以通过对应用中所有的导航栏和标签栏同意设置背景.字体等属性. 如:创建一个继承自“UINavigation ...
- 五子棋Web版的开发(二)--整合Spring4.3+hibernate4+Struts2.3
拖了这么久才把ssh框架给整合完毕,期间发现自己对SSH的知识真的是知之甚少.在整合期间遇到了无数的坑,我还是先把项目地址发一下吧 首先我遇到的第一个问题是 CreateQuery is not va ...
- JBoss 系列二十一:JBossCache核心API
内容简介 本处介绍JBossCache相关的主要API,我们目的通过本部分描述,读者可以使用JBossCache API,在自己的应用中使用JBossCache. Cache接口 Cache 接口是和 ...
- codeforces 628F. Bear and Fair Set 网络流
题目链接 F. Bear and Fair Set time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- android-适配Adapter
Adapter是把数据和用户界面视图绑定到一起的桥梁类,负责创建用来表示父视图中的每一个条目的子视图,并提供对底层数据的访问. public class MainActivity extends Ac ...
- css 一些事
1.两个div左边的固定宽度右边的自动填充的css <div id="main" style="width:98%;"> <div id=&q ...
- python的正则表达式 re
python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一 ...