可以用一个 id 数组(或者在存边的邻接表用结构体)作为从这条边返回到当前节点时的顺序(因为vector是有顺序的,所以在访问的时候是有固定的顺序的)
代码如下:
while(m--){
int u,v;
cin>>u>>v;
if(u==v)continue;
e[u].push_back(v);
e[v].push_back(u);
id[u].push_back(e[v].size()-1);
id[v].push_back(e[u].size()-1);
}
void tarjan(int x,int fa,int idx){
if(v==fa&&i==idx)continue;
tarjan(v,x,id[x][i]);