#include #include #include #include #include using namespace std; const int MAXN = 5e5 + 10; const int INF = 0x3f3f3f3f; int w[MAXN]; int cnt[MAXN]; int deg[MAXN]; vector G[MAXN]; int n; int BFS(void) { queue Q; int ret = 0; for (int i=1; i<=n; ++i) cnt[i] = 1; for (int i=1; i<=n; ++i) { if (!deg[i]) Q.push (i); } while (!Q.empty ()) { int u = Q.front (); Q.pop (); ret = max (ret, cnt[u]); for (int i=0; i