#include <iostream>
#include <string.h>
using namespace std;
const int MAX_N=;
const int MAX_M=;
struct edge{
int v,next;
int len;
}E[MAX_M];
int p[MAX_N],eid;
void init(){
memset(p,-,sizeof(p));
eid=;
}
void insert(int u,int v){
E[eid].v=v;
E[eid].next=p[u];
p[u]=eid++;
} void tarjan(int u){
dfn[u]=low[u]=++idx;
s[top++]=u;
in_stack[u]=true;
for(int i=p[u];i+;i=E[i].next){
int v=E[i].v;
if(!dfn[v]){
tarjan(v);
low[u]=min(low[u],low[v]);
}else if(in_stack[v]){
low[u]=min(low[u],dfn[v]);
}
}
if(dfn[u]==low[u]){
++scc;
do{
belong[s[--top]]=scc;
in_stack[s[top]]=false;
}while(s[top]!=u);
}
}
int main() {
int n,m;
init();
cin>>n>>m;
for(int i=;i<m;i++){
int u,v;
cin>>u>>v;
insert(u,v);
}
memset(dfn,,sizeof(dfn));
idx=;
for(int i=;i<=n;++i){
if(!dfn[i]){
tarjan(i);
}
}
for(int i=;i<=scc;i++){
cout<<"block "<<i<<": ";
for(int j=;j<=n;j++){
if(belong[j]==i){
cout<<j<<" ";
}
}
cout<<endl;
}
return ;
}

最新文章

  1. 文件上传命令rz和下载命令sz的安装
  2. Careercup - Facebook面试题 - 5177378863054848
  3. Axiom3D学习日记 1.程序配置
  4. Warning: World-writable config file &#39;/etc/my.cnf&#39; is ignored
  5. JavaScript 中的事件类型1(读书笔记思维导图)
  6. 编写JQuery插件-3
  7. python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片
  8. redis恢复(aof)
  9. tidb在DDL语句方面的测试
  10. Java三种代理模式:静态代理、动态代理和cglib代理
  11. 【scrapy】其他问题
  12. PHP中类和对象的相关函数
  13. PHPCMS V9开发文档
  14. ubuntu16.04下安装kdevelop和汉化
  15. (转)MySQL自带的性能压力测试工具mysqlslap详解
  16. PEB及LDR链
  17. 关于IdByName 为什么一个消息主题要有 Id和 Name的解释
  18. 《C# to IL》第二章 IL基础
  19. apache的应用(发布目录,黑白名单,虚拟主机,PHP-cgi支持,正向代理,https加密,)
  20. 【状压DP】BZOJ2734-[HNOI2012]集合选数

热门文章

  1. BZOJ5093图的价值(斯特林数)
  2. centos7/rhel7下安装redis4.0集群
  3. php记录
  4. 被addPropertyChangeListener(&quot;...&quot;,this)差点搞崩溃
  5. 第二十二篇-Guideline基准线
  6. 第二篇:用Android Studio编写Hello World
  7. SNP在世界地图上的频率分布
  8. 认识EasyUI——DataGrid的onClickRow事件
  9. POJ 1815 Friendship (Dinic)
  10. text-overflow文本溢出隐藏“...”显示