先求拓扑序,利用拓扑序倒叙,因为拓扑序倒叙才能保证正确的顺序性,比如u—>v,我们一定先求出v能够到达哪些点,然后用v到达点的数量更新u,这也就是利用拓扑序倒叙就可以做到。
bitset数据结构,存放二进制数,比如001011,此类数据
我们在统计哪些边相连同时,利用bitset数据结构即可存储哪些存在边,更新时只需要f[v]|=f[u]即可更新。
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define x first
#define y second
typedef pair<int,int> PII;
const int N=3e4+10,M=3e4+10,mod=1e5+3;
int n,m,ans,ecnt,tot;