为什么这两个代码在写点双的时候一个是对的一个是错的,这两个不是等价的吗?
void tarjian(int u){
dfs[u] = low[u] = ++tot ;
st.push(u) ;
for(auto x:G.e[u]){
if(!dfs[x]){
tarjian(x) ;
low[u] = min(low[u],low[x]) ;
if(low[x]>=dfs[u]){
newtot++ ;
T.e[newtot].push_back(u) ;
T.e[u].push_back(newtot) ;
int temp=st.top() ;
while(temp!=u){
st.pop() ;
T.e[newtot].push_back(temp) ;
T.e[temp].push_back(newtot) ;
temp = st.top() ;
}
/*
do{
temp = st.top() ;
T.e[newtot].push_back(temp) ;
T.e[temp].push_back(newtot) ;
st.pop() ;
}while(temp!=x) ;
*/
}
}else low[u] = min(low[u],low[x]) ;
}
}