题目链接

经过宝哥的讲解,终于对这种问题有了进一步的理解。根据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 ;
}

最新文章

  1. 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
  2. Javascript初学篇章_1(概念/数据类型)
  3. 关于spring AOP的学习
  4. WCF账户密码认证
  5. Fix git 提交代码错误
  6. hpunix下11gRac的安装
  7. 创建eclipse针对NDK的联合编译环境。
  8. 【C语言】03-第一个C程序代码分析
  9. A note to &quot;On global motions of a compressible barotropic and selfgravitating gas with density-dependent viscosities&quot;
  10. Cocos2d-JS中JavaScript继承
  11. 【M1】仔细区别pointers和references
  12. 深入理解C指针之一:初识指针
  13. angularJS 系列(二)——理解指令 understanding directives
  14. 用 node.js 创建第一个Hello World
  15. 桥接模式二(Bridge)
  16. HighCharts之2D带有Legend的饼图
  17. Flex内存泄露解决方法和内存释放优化原则
  18. Zookeeper增删改查
  19. 【 lca倍增模板】
  20. mybatis动态数据更新 + 批量动态数据插入

热门文章

  1. ASP.NET中一般处理程序报的错误:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值
  2. [luoguP2495] [SDOI2011]消耗战(DP + 虚树)
  3. [luoguP2862] [USACO06JAN]把牛Corral the Cows(二分 + 乱搞)
  4. BZOJ3473 字符串 【广义后缀自动机】
  5. 【树状数组区间修改单点查询+分组】HDU 4267 A Simple Problem with Integers
  6. JS控制背景音乐 没有界面
  7. C# 实现刻录光盘功能
  8. LoadBitmap(IDB_BITMAP1) -- 未定义标识符 IDB_BITMAP1
  9. ftrace的使用
  10. GridView动态添加View