关于成对变换

P8436 【模板】边双连通分量

Lysea @ 2023-08-09 13:52:55

为什么cnt从2开始,写i^1是对的:

cnt=1;
for(int i=1,u,v;i<=m;i++){
    cin>>u>>v;
    if(u==v) continue;
    add(u,v),add(v,u);
}
void Tarjan(int x,int last){
    dfn[x]=low[x]=++tot;
    for(int i=head[x];i;i=e[i].next){
        int y=e[i].to;
        if(!dfn[y]){
            Tarjan(y,i);
            low[x]=min(low[x],low[y]);
            if(dfn[x]<low[y]) line[i]=line[i^1]=true;
        }else if(i!=(last^1)) low[x]=min(low[x],dfn[y]);
    }
}

而当cnt从1开始,写((i-1)^1)+1时就错了。


by Lysea @ 2023-08-09 14:00:42

@gty314159 第二种不对吗?


by Iniaugoty @ 2023-08-09 14:07:40

@Sands_Of_Time 呃看错了,看起来没有问题


by Iniaugoty @ 2023-08-09 14:07:56

等一下我去机房了


by MushR @ 2023-08-09 14:44:18

有个问题: (i^1)+1((i-1)^1)+1 不是一样的ma


by Lysea @ 2023-08-09 19:42:10

@wjiay 不一样吧,对于偶数来说,一个是往上变换,一个是往下变换


|