并查集经典题
1. 向量的思考模式
2. 再计算向量时,要画图;有一个关系一开始写错了
3. 本人的norm函数一开始x >= 3写成了 x>3,应该对这种小函数多做UT(口头上的,比如)
4. 可以把father set一开始memset为-1
参考链接
http://blog.csdn.net/tiantangrenjian/article/details/7085575
http://pdjlzs.diandian.com/post/2012-02-03/15719424

#include <iostream>
using namespace std; #define ANI_MAX (50000 + 10) int ss[ANI_MAX];
int rk[ANI_MAX]; int norm(int x)
{
if (x >= 3)
{
x = x % 3;
}
else if (x < 0)
{
while (x < 0)
{
x += 3;
}
}
return x;
} void init()
{
for (int i = 0; i < ANI_MAX; i++)
{
ss[i] = i;
}
memset(rk, 0, sizeof(rk));
} int find(int x)
{
if (ss[x] == x)
{
return x;
}
else
{
int r = find(ss[x]);
rk[x] = norm(rk[x] + rk[ss[x]]);
ss[x] = r;
return r;
}
} bool merge(int x, int y, int type)
{
int fx = find(x);
int fy = find(y);
if (fx == fy)
{
if (norm(rk[y] - rk[x]) != type)
{
return true;
}
else
{
return false;
}
} ss[fy] = fx;
rk[fy] = norm(rk[x] - rk[y] + type);
return false;
} int main(void)
{
int n;
int k;
scanf("%d %d",&n,&k);
int error = 0;
init();
for (int i = 0; i < k; i++)
{
int d;
int x;
int y;
scanf("%d %d %d",&d,&x,&y);
if (x > n || y > n || (d == 2 && x == y))
{
error++;
continue;
}
else if (merge(x, y, d - 1))
{
error++;
} } cout << error << endl; return 0;
}

  

POJ1182 食物链的更多相关文章

  1. 并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)

    并查集专题训练地址,注册登录了才能看到题目 并查集是一个树形的数据结构,  可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集 ...

  2. POJ1182 食物链---(经典种类并查集)

    题目链接:http://poj.org/problem?id=1182   食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  3. NOI2001|POJ1182食物链[种类并查集 向量]

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65430   Accepted: 19283 Description ...

  4. POJ-1182 食物链 并查集(互相关联的并查集写法)

    题目链接:https://cn.vjudge.net/problem/POJ-1182 题意 中文题目,就不写了哈哈 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃 ...

  5. poj1182食物链_并查集_挑战程序设计竞赛例题

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65534   Accepted: 19321 Description ...

  6. [poj1182]食物链(并查集+补集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64841   Accepted: 19077 Description ...

  7. poj1182(食物链)续

    意 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用 ...

  8. poj1182(食物链)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49320   Accepted: 14385 Description ...

  9. POJ1182 食物链(并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 55260   Accepted: 16210 Description ...

  10. (转)poj1182食物链

    这题主要是看了http://blog.csdn.net/c0de4fun/article/details/7318642这篇解题报告,所以内容基本是转的!感谢大牛这么详细的把过程写的很清楚! 这道题目 ...

随机推荐

  1. 如何在CentOS5中增加CentALT的源

    1. 建立centalt.repo    指令: vi /etc/yum.repos.d/centalt.repo 2. 將下面的內容貼進去    [CentALT]    name=CentALT ...

  2. silverlight Frame嵌套页面刷新问题

    1.此方法将会刷新到主页面 private void btn_Click(object sender, RoutedEventArgs e) { HtmlPage.Window.Eval(" ...

  3. php实现查询百度google收录情况(示例代码)

    对了貌似查google pr的东西只是file一个地址而已,如此说了就没有什么难度了.完整代码如下 写了一个小东西记录baidu和google对于站点的收录情况,现在可以查询了,其实也没什么难度,就是 ...

  4. Crusher Django 学习笔记4 使用Model

    http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial4-using-basic.html 顺便学习一下FQ Crush ...

  5. 用cookie实现localstorage功能

    在项目中需要利用到html5的localstorage.但在利用这个属性的时候却发现无法达到预定目标.经过不断的检查及排除,最后发现原因所在: 项目中使用的浏览器是支持localstorage的,但是 ...

  6. 通信录分组并且分组标签悬停划入划出(包含错误信息及修改)--第三方开源--PinnedSectionListView

    PinnedSectionListView在github上的链接地址是:https://github.com/beworker/pinned-section-listview . 下载下来后直接将Pi ...

  7. 说Win7激活

    今天晚上给电脑来了个强制关机,后来打开后提示我,该Windos不是正版,顿时无语.诺,看下图:我的桌面也全部变成黑色了…… 后来一想……哦,应该是我的安装光盘里的激活工具激活的不彻底,或者说只是给我激 ...

  8. jquery冒泡及阻止

    javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结. 事件冒泡是一个从子节点向祖先节点冒泡的过程: 事件捕获刚好相反,是从祖先节点到子节点 ...

  9. SQL Server 读取CSV中的数据

    测试: Script: create table #Test ( Name ), Age int, T ) ) BULK INSERT #Test From 'I:\AAA.csv' with( fi ...

  10. Sales_item

    #ifndef SALESITEM_H #define SALESITEM_H // Definition of Sales_item class and related functions goes ...