POJ 1182 食物链(并查集)
2024-10-20 00:45:05
经过宝哥的讲解,终于对这种问题有了进一步的理解。根据flag[x]和flag[y]求flag[tx]是最关键的了。
0吃1,1吃2,2吃0.
假设flag[tx] = X;
那么X + flag[x] = flag[y] + 2 (当x吃y的时候)
#include <cstring>
#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int o[];
int flag[];
int ans;
int find(int x)
{
if (x == o[x]) return x;
int t = find(o[x]);
flag[x] = (flag[o[x]] + flag[x]) % ;
return o[x] = t;
}
void judge1(int x,int y)
{
int tx,ty;
tx = find(x);
ty = find(y);
if(tx != ty)
{
o[tx] = ty;
flag[tx] = (flag[y] - flag[x] + )%;
}
else if(tx == ty)
{
if(flag[x] != flag[y])
ans ++;
}
}
void judge2(int x,int y)//x吃y
{
int tx,ty;
tx = find(x);
ty = find(y);
if(tx != ty)
{
o[tx] = ty;
flag[tx] = (flag[y] - flag[x] + )%;
}
else if(tx == ty)
{
if((flag[x]-flag[y]+)% != )
ans ++;
}
}
int main()
{
int n,m,num,sv,ev,i;
scanf("%d%d",&n,&m);
ans = ;
for(i = ; i <= n; i ++)
{
o[i] = i;
flag[i] = ;
}
for(i = ; i < m; i ++)
{
scanf("%d%d%d",&num,&sv,&ev);
if(sv > n||ev > n)
{
ans ++;
continue;
}
if(num == )
{
judge1(sv,ev);
}
else
{
judge2(sv,ev);
}
}
printf("%d\n",ans);
return ;
}
最新文章
- 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
- Javascript初学篇章_1(概念/数据类型)
- 关于spring AOP的学习
- WCF账户密码认证
- Fix git 提交代码错误
- hpunix下11gRac的安装
- 创建eclipse针对NDK的联合编译环境。
- 【C语言】03-第一个C程序代码分析
- A note to ";On global motions of a compressible barotropic and selfgravitating gas with density-dependent viscosities";
- Cocos2d-JS中JavaScript继承
- 【M1】仔细区别pointers和references
- 深入理解C指针之一:初识指针
- angularJS 系列(二)——理解指令 understanding directives
- 用 node.js 创建第一个Hello World
- 桥接模式二(Bridge)
- HighCharts之2D带有Legend的饼图
- Flex内存泄露解决方法和内存释放优化原则
- Zookeeper增删改查
- 【 lca倍增模板】
- mybatis动态数据更新 + 批量动态数据插入
热门文章
- ASP.NET中一般处理程序报的错误:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值
- [luoguP2495] [SDOI2011]消耗战(DP + 虚树)
- [luoguP2862] [USACO06JAN]把牛Corral the Cows(二分 + 乱搞)
- BZOJ3473 字符串 【广义后缀自动机】
- 【树状数组区间修改单点查询+分组】HDU 4267 A Simple Problem with Integers
- JS控制背景音乐 没有界面
- C# 实现刻录光盘功能
- LoadBitmap(IDB_BITMAP1) -- 未定义标识符 IDB_BITMAP1
- ftrace的使用
- GridView动态添加View