倒着处理删点,就变成了加点,于是并查集. #include<cstdio> using namespace std; #define N 400001 int fa[N],kill[N],rank[N],n,m,q; bool hav[N]; int next[N],first[N],v[N],en,x,y,anss[N],cnt; void AddEdge(int U,int V) { v[++en]=V; next[en]=first[U]; first[U]=en; } int find…