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

本文共 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

你可能感兴趣的文章
AlphaZero进化论:从零开始,制霸所有棋类游戏
查看>>
Rust编程语言的核心部件
查看>>
效果逆天的通用语言模型GPT 2.0来了,它告诉了我们什么?
查看>>
eBay测试老兵的修炼之道:如何从测试“小工”到测试“专家”?
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
Coinbase是如何在其加密货币交易平台上应对扩展性挑战的
查看>>
Mozilla公布WebVR API标准草案
查看>>
为什么我不会在新公司中使用Rails
查看>>
最新 Chrome DevTools(v57) 使用详解
查看>>
为什么说Pravega是流处理统一批处理的最后一块拼图?
查看>>
麦当劳数字化转型中获得的6个数据科学经验
查看>>
Box开源持续本土化平台Mojito
查看>>
java的常用设计模式
查看>>
下一代搜索技术霸主之争!百度重磅推出“Lens”
查看>>
精益业务分析宣言解读
查看>>
IntelliJ IDEA 2017.2发布:更智能,更利落,更快速
查看>>
从项目导向转向产品导向中的挑战
查看>>
Ooui:在浏览器中运行.NET应用
查看>>
Reddit重写其iOS应用,改进性能、模块化和测试
查看>>
Visual Studio 2019正式版发布,专注于人工智能和生产力
查看>>