摘要:
经典的tarjan,但是这次要求个数,因此考虑做完后先重建边,去掉重边,因为缩点后每个连通块是一个点,所以往外的点都是同一个。 之后在拓扑序里面求一下就行。 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons 阅读全文
摘要:
显然我们看到数据范围这么小,就很自然的想到dp。所以可以把状态设成以i为根节点可以异或出的答案是j 这样我们先对子树进行操作,之后枚举二维来暴力异或更新。 在更新的时候,千万不能直接拿原数组更新,而要存一个备份数组,因为如果拿原数组更新,很可能出与某个子树更新的答案又继续跟当前子树更新,从而多出答案 阅读全文
摘要:
本题数据量比较大,可以用tarjan缩点后判环,我使用的是差分约束,如果存在环的情况,最好将队列换成栈。 但是在普通求spfa的时候,还是要用队列。 #include<bits/stdc++.h> using namespace std; const int N=3e5+10; int h[N],n 阅读全文