【模板】有向图tarjan

#include<bits/stdc++.h> using namespace std; const int N=10005,M=50005; vector<int> son[N]; int dfn[N],low[N],num,s[N],out[N],top,cnt; int scc[N]; int sz[N],n,m; void tarjan(int u) { low[u]=dfn[u]=++num,s[++top]=u; for(int i=0;i<son[u].size();i++) { int v=son[u][i]; if(!dfn[v]) { tarjan(v); low[u]=min(low[u],low[v]); } else if(!scc[v]) low[u]=min(low[u],dfn[v]); } if(dfn[u]==low[u]) { cnt++;int y; do { y=s[top--],scc[y]=cnt,sz[cnt]++; }while(u!=y); } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); son[u].push_back(v); } for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i); }

__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530410.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示