题目链接:http://codeforces.com/contest/707/problem/D

根据询问建立一棵树然后DFS。

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+3;
const int maxn=1e5+3;
int n,m,q;
vector<int> G[maxn];
bitset<N> bit[N];
bitset<N> opp;
int ope[maxn],a[maxn],b[maxn],ans[maxn];
void dfs(int x)
{
if(ope[x]==1)
{
int flag=0;
if(!bit[a[x]][b[x]])
{
bit[a[x]][b[x]]=1;
ans[x]++;
flag=1;
}
for(int i=0;i<G[x].size();i++)
{
ans[G[x][i]]=ans[x];
dfs(G[x][i]);
}
if(flag)
bit[a[x]][b[x]]=0; }
else if(ope[x]==2)
{
int flag=0;
if(bit[a[x]][b[x]])
{
bit[a[x]][b[x]]=0;
ans[x]--;
flag=1;
}
for(int i=0;i<G[x].size();i++)
{
ans[G[x][i]]=ans[x];
dfs(G[x][i]);
}
if(flag)
bit[a[x]][b[x]]=1;
}
else if(ope[x]==3)
{
ans[x]+=m-2*bit[a[x]].count();
bit[a[x]]^=opp;
for(int i=0;i<G[x].size();i++)
{
ans[G[x][i]]=ans[x];
dfs(G[x][i]);
}
bit[a[x]]^=opp;
}
else
{
for(int i=0;i<G[x].size();i++)
{
ans[G[x][i]]=ans[x];
dfs(G[x][i]);
}
}
}
int main()
{
scanf("%d %d %d",&n,&m,&q);
for(int i=1;i<=m;i++)
opp[i]=1;
for(int i=1;i<=q;i++)
{
scanf("%d",&ope[i]);
if(ope[i]==1)
{
scanf("%d %d",a+i,b+i);
G[i-1].push_back(i);
}
else if(ope[i]==2)
{
scanf("%d %d",a+i,b+i);
G[i-1].push_back(i);
}
else if(ope[i]==3)
{
scanf("%d",a+i);
G[i-1].push_back(i);
}
else
{
scanf("%d",a+i);
G[a[i]].push_back(i);
}
}
for(int i=0;i<G[0].size();i++)
{
ans[G[0][i]]=0;
dfs(G[0][i]);
}
for(int i=1;i<=q;i++)
printf("%d\n",ans[i]);
return 0;
}

codeforces 707D-(DFS+bitset)的更多相关文章

  1. Persistent Bookcase CodeForces - 707D (dfs 离线处理有根树模型的问题&&Bitset)

    Persistent Bookcase CodeForces - 707D time limit per test 2 seconds memory limit per test 512 megaby ...

  2. [HIHO1041]国庆出游(DFS, bitset)

    题目链接:http://hihocoder.com/problemset/problem/1041 学会了用C++的bitset哈,可喜可贺.以后遇到超过64位想用位来表示状态就不愁了哈. 这题用bi ...

  3. Military Problem CodeForces 1006E (dfs序)

    J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...

  4. Graph Without Long Directed Paths CodeForces - 1144F (dfs染色)

    You are given a connected undirected graph consisting of nn vertices and mm edges. There are no self ...

  5. [CSP-S模拟测试]:世界线(DFS+bitset)

    题目描述 时间并不是一条单一的线,而是有许多世界线构成的流. 在一些时刻,世界线会发生分裂:同样的,它们也有可能在一些时刻收束在一起.如果将这些时刻抽象成点,那么这些世界线构成的网络,实际上是一张有向 ...

  6. 素数环(dfs+回溯)

    题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...

  7. UVA 291 The House Of Santa Claus(DFS算法)

    题意:从 节点1出发,一笔画出 圣诞老人的家(所谓一笔画,就是遍访所有边且每条边仅访问一次). 思路:深度优先搜索(DFS算法) #include<iostream> #include&l ...

  8. 历届试题 邮局(dfs+剪枝)

      历届试题 邮局   时间限制:1.0s   内存限制:256.0MB      问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流.为了方便村民们发信,C村打算在C村建设k ...

  9. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE

    POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...

  10. codeforces 731C(DFS)

    题目链接:http://codeforces.com/contest/731/problem/C 题意:有n只袜子(1~n),k种颜色(1~k),在m天中,左脚穿下标为l,右脚穿下标为r的袜子,问最少 ...

随机推荐

  1. hdu-----(4857)逃生(拓扑排序)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  2. hdu----149850 years, 50 colors(最小覆盖点)

    50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. Permutation Sequence [LeetCode]

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  4. 原生JavaScript实现mouseenter

    mouseenter和Mouseleave都是jquery的事件,JavaScript的mouseover和mouseout每个子元素都会触发,从子元素移到父元素也会触发,用起来不很方便,而且触发的太 ...

  5. .net读取xml文件中文乱码问题解决

    读取XML的编码方式Encoding.UTF8 要和<?xml version="1.0" encoding="utf-8"?>的encoding ...

  6. tar.xz如何解压:linux和windows下tar.xz解压命令介绍

    在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz  //先解压xz # ...

  7. java8Lambda详解

    [移步] http://blog.csdn.net/ioriogami/article/details/12782141/

  8. java四大名著

    java编程思想effective Javajava核心技术java编程语言 外加:  深入理解java虚拟机 自己动手写java虚拟机 java并发编程的艺术 java常用算法手册 其他计算机需要看 ...

  9. 常见JS(JavaScript)冲突解决方法

    1.一般JS冲突解决办法 a.最容易出现的就是js的命名冲突 ①.变量名冲突 变量有全局变量和局部变量当全局变量变量和局部变量名称一致时,就会js冲突,由于变量传递数值或地址不同就会产生JavaScr ...

  10. python错误集锦

    1.lt与list等同,不能作为变量名 2.中文路径名:os.path.normcase(filepath) 如果遇到 ascii码在路径某处不能转换, 那么 filepath.encode('gbk ...