题解:
利用kosaraju+bitset可以在知道邻接矩阵的情况下 O ( n 2 32 ) O(\frac{n^2}{32}) O(32n2)解决强连通分量计数。
用回滚莫队即可在 O ( m m ) O(m \sqrt{m}) O(mm)的时间内获得所有询问的邻接矩阵了。 时间复杂度 O ( m m + q n 2 32 ) O( m\sqrt{m} + q\frac{n^2}{32}) O(mm+q32n2)。
#include <bits/stdc++.h>
#include <bitset>
using namespace std;
typedef pair <int,int> pii;
const int RLEN=1<<18|1;
inline char nc() {
static char ibuf[RLEN],*ib,*ob;