博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1182
阅读量:6658 次
发布时间:2019-06-25

本文共 1311 字,大约阅读时间需要 4 分钟。

  并查集应用,只要会做POJ2492,这道题也没什么问题了,也是利用偏移量解题,注意的是,为了方便起见,relation[x]=0表示x与x的根节点的关系是同类,relation[x]=1表示x被x的根节点吃,relation[x]=2表示x吃x的根节点。所以读入kind的时候应该改一下。另外,x吃x才算错,所以数据如1 5 5是正确的。有关偏移量,在中有详细的说明,由于这道题POJ只有单组数据,所以while scanf()!=EOF应该去掉。

#include
#define MAX_ANIMAL 50010int get_root(int),parnt[MAX_ANIMAL],relation[MAX_ANIMAL];void merge(int,int,int);int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) { int i,ans=0; for(i=0;i
n||b>n) { ans++; } else if(a==b&&kind==2) { ans++; } else { int roota=get_root(a),rootb=get_root(b); if(roota!=rootb) { merge(a,b,kind); } else { if(kind!=((relation[a]+3-relation[b])%3)) { ans++; } } } } printf("%d\n",ans); } return 0;}int get_root(int x){ if (parnt[x]==x) return x; int tmp=get_root(parnt[x]); relation[x]= (relation[x]+relation[parnt[x]])%3; return parnt[x]=tmp;}void merge(int x,int y,int kind){ int rootx=get_root(x),rooty=get_root(y); if(rootx==rooty) return ; relation[rooty]=(relation[x]+3-kind+3-relation[y])%3; parnt[rooty]=rootx;}

转载于:https://www.cnblogs.com/coredux/archive/2012/08/04/2623070.html

你可能感兴趣的文章
thunar、nautilus右键添加 "压缩/解压"菜单
查看>>
基于jQuery的waterfall(瀑布流)布局
查看>>
heartheat+drbd高可用存储
查看>>
打包压缩
查看>>
Windows phone开发初体验之-页面导航
查看>>
groovy 闭包的用途
查看>>
前端工程师的进阶之路
查看>>
request
查看>>
Go 语言环境变量设置
查看>>
上海社保已经破产,全国呢?
查看>>
Centos7 配置 sendmail、postfix 端口号25、465
查看>>
ActiveMQ - 初体验,探讨JMS通信模型
查看>>
URL的井号(转自阮一峰)
查看>>
我的友情链接
查看>>
解密FFmpeg播放状态控制内幕
查看>>
我的友情链接
查看>>
90、MPLS基础配置实验
查看>>
51cto博客 存在csrf漏洞
查看>>
我的友情链接
查看>>
我的友情链接
查看>>