在写一道题时,我代码中的 findc() 函数有如下片段:
if(!vis[y])
if(findc(y)) return 1;
else{
int tid = x;
while(1){
inc[tid] = 1;
cv[++cn] = tid, cw[cn] = w[tid];
tid = fa[tid];
if(tid == x) break;
}
return 1;
}
结果会 RE。
然而改成这样:
if(!vis[y]){
if(findc(y)) return 1;
}
else{
int tid = x;
while(1){
inc[tid] = 1;
cv[++cn] = tid, cw[cn] = w[tid];
tid = fa[tid];
if(tid == x) break;
}
return 1;
}
就 AC 了。
求大佬解释这两段代码运行顺序的不同 QwQ。