#include
#include
#include
#include
#include
using namespace std;
const int MAXN = 1001;
vector g[MAXN];//adjlist
stack S,P;
int belong[MAXN],vis[MAXN],indeg[MAXN],sccg[MAXN][MAXN],scccnt,disc[MAXN];
void init()
{
for(int i=0;idisc[v])P.pop();
}
}
if(P.top()==u)
{
while(S.top()!=u)
{
int v = S.top();
belong[v] = scccnt;
S.pop();
}
S.pop();
belong[u] = scccnt;
P.pop();
scccnt++;
}
}
void Gabow(int n)
{
int time = 0;
for(int i=1;i<=n;i++)
{
if(!vis[i])dfs_scc(i,time);
}
}
void make_sccg(int n)
{
for(int i=1;i<=n;i++)
{
for(int j=0;j