int From[maxn],Laxt[maxn],To[maxn<<2],Next[maxn<<2],cnt;

int low[maxn],dfn[maxn],times,q[maxn],head,scc_cnt,scc[maxn];

vectorG[maxn];

int dis[maxn],S,T,ans;

void add(int u,int v)

{

Next[++cnt]=Laxt[u]; From[cnt]=u;

Laxt[u]=cnt; To[cnt]=v;

}

void tarjan(int u,int fa)

{

dfn[u]=low[u]=++times;

q[++head]=u;

for(int i=Laxt[u];i;i=Next[i]){

if(To[i]fa) continue;

if(!dfn[To[i]]) {

tarjan(To[i],u);

low[u]=min(low[u],low[To[i]]);

}

else low[u]=min(low[u],dfn[To[i]]);

}

if(low[u]dfn[u]){

scc_cnt++;

while(true){

int x=q[head--];

scc[x]=scc_cnt;

if(x==u) break;

}

}

}

void init()

{

memset(Laxt, 0, sizeof(Laxt));

cnt = 0;

}

int main()

{

init();

int N,M,u,v,i,j;

scanf("%d%d",&N,&M);

for(i=1;i<=M;i++){

scanf("%d%d",&u,&v);

add(u,v); add(v,u);

}

tarjan(1,0);

for(i=1;i<=N;i++){

for(j=Laxt[i];j;j=Next[j]){

if(scc[i]!=scc[To[j]])

G[scc[i]].push_back(scc[To[j]]);

}

}

return 0;

}

最新文章

  1. C++-Qt【2】-实现一个简单的记事本
  2. SQL性能优化案例分析
  3. django 自定义表单
  4. Visual Studio 2010配置Opencv2.4.9
  5. ExtJS MVC学习手记 2
  6. 关于web中的自适应布局
  7. PHP开发搜索引擎技术全解析
  8. iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
  9. Java文件操作二:File文件的方法
  10. CentOS7.0 安装JAVA周围环境
  11. CentOS 引导 Win10 启动项
  12. 我是怎么知道 PTHREAD_MUTEX_INITIALIZER 是什么鬼东西的 ??
  13. Nodejs+MQTT
  14. 渗透测试_利用Burp爆破用户名与密码
  15. 多级分类标签{dede:channelartlist}实现当前栏目颜色高亮显示
  16. [hdu P4114] Disney&#39;s FastPass
  17. Lombok(1.14.8)的简单示例
  18. Bzoj5332: [Sdoi2018]旧试题
  19. grep与正则表达式的使用
  20. angular的uiRouter服务学习(2)

热门文章

  1. Oracle中替换字符中空格、制表符、换行符、回车符
  2. OpenGL(5)——变换
  3. Unity爬坑记录-Sprite 相关功能Editor、打包器等无法使用
  4. php-fpm的参数优化
  5. Httpwatch教程
  6. (十三)springMvc 处理 Json
  7. NOIP2012 借教室 题解 洛谷P1083
  8. PHP获取今日、昨日、本周、上周、本月、上月、本季、上季、今年、去年
  9. fiddler笔记:Composer选项卡
  10. Python多线程VS多进程