#include<bits/stdc++.h>
using namespace std;
int intdex,low[10000],dfn[10000],v[10000];
stack<int> s;
vector<int> G[10000];
void tarjin(int x){
dfn[x]=++index;
low[x]=index;//首先记录时间戳
s.push(x);
v[x]=1;
for(int i=0;i<G[x].size();i++){
if(!dfn[G[x][i]){
tarjin(G[x][i]);
low[x]=min(low[x],low[G[x][i]);//如果没有访问过,就访问一下 然后比较一下时间戳,保证了同一个强连分量的时间戳最小
}else if(v[G[x][i]){//如果还在栈中
low[x]=min(low[x],dfn[G[x][i]]);
}
}
if(low[x]==dfn[x]){//如果是某个强连通分量的跟节点
v[x]=0;
while(s.top()!=x){
v[s.top()]=0;
s.pop()
}
s.pop();
}
}
int main(){
}