hdu 6072 Logical Chain Kozaraju+bitset

题意

有一张n个节点的有向图,m组操作,每次最多翻转K条边,求每组操作后可以相互到达的点的对数。
n ≤ 250 , m ≤ 25000 , k ≤ 10 n\le250,m\le25000,k\le10 n250,m25000,k10

分析

只要求出每个强连通分量的大小就可以知道答案了。
用tarjan来做的时间复杂度是 O ( n 2 m ) O(n^2m) O(n2m),显然跑不过。
如果用Kozaraju的话,可以用bitset压位来优化,于是就可以做到 O ( n 2 m w ) O(\frac{n^2m}{w}) O(wn2m)
这题丧心病狂要手写bitset。

写bitset的时候有一些小技巧,比如说memset("",x,"")表示把数组每个数的每8个相邻二进制位都赋值为x。
比如说运行memset("",1,"

你可能感兴趣的:(连通分量,STL)