社区讨论
关于dfs判环
灌水区参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo7s4wli
- 此快照首次捕获于
- 2023/10/27 06:52 2 年前
- 此快照最后确认于
- 2023/10/27 06:52 2 年前
这样为什么不行?
有向图,dfs遍历,如果遍历到一个走过并且dfn序大于等于rt(当前开始遍历的节点)的就是环
CPPvoid dfs(int x){
if(fl)return;
dfn[x]=++iddfn;//if(x==48||x==88)clog<<x<<':'<<dfn[x]<<endl;
for(int i=He[x];i;i=Nx[i]){
int y=To[i];
if(w[i]<=val)continue;
if(dfn[y]&&dfn[rt]>dfn[y])continue;
if(dfn[y]){fl=1;return;}
dfs(y);
}
}
//main函数里的
for(int i=1;i<=n;i++){
if(dfn[i])continue;
rt=i;dfs(i);
if(fl)break;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...