#include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) typedef long long ll; #define MIN(a, b) ((a)>(b)? (b): (a)) #define MAX(a, b) ((a)<(b)? (b): (a)) #define LINF 9223300000000000000 #define INF 2140000000 const long long MOD = 1000000007; //const long long MOD = 998244353; using namespace std; vector > > g; // to,edge vector vis,fin; bool dfs(int curr) { assert(vis[curr]==0); vector > z; { int siz=(int)g[curr].size(); if(siz==0) { vis[curr]=fin[curr]=1; } int i; for(i=0; i