rt
为什么前向星和vector同样的存储顺序在tarjan遍历时的顺序不一样啊
代码链接
输入样例:
7 8
1 3
2 4
3 5
2 5
6 4
2 5
6 3
2 7
原代码输出
1->3
3->1
3->5
5->3
5->2
2->4
4->2
4->6
6->4
6->3
2->5
2->5
2->7
5->2
3->6
7->2
2
6 1 3 5 2 4 6
1 7
把dfs时修改为
void dfs(int x)
{
c[x]=cnt;
if(x) ans[cnt].push_back(x);
for(int i=head[x];i;i=Next[i])
{
int y=ver[i];
cout<<x<<"->"<<y<<'\n';
if(c[y]||bridge[i]) continue;
dfs(y);
}
}
之后输出
1->3
2->7
2->5
5->2
5->2
5->3
3->6
6->3
6->4
4->6
4->2
3->5
3->1
2->5
2->4
7->2
3
1 1
5 2 5 3 6 4
1 7
此时答案正确
对于这一玄学现象求解释