问一个小小的问题
  • 板块灌水区
  • 楼主lao_wang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/11 17:27
  • 上次更新2024/4/11 19:51:52
查看原帖
问一个小小的问题
701408
lao_wang楼主2024/4/11 17:27

为什么这两个代码在写点双的时候一个是对的一个是错的,这两个不是等价的吗?

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]) ;
	}
}
2024/4/11 17:27
加载中...