#include <algorithm>
#include <cstdio>
#include <map> using namespace std; const int N();
map<int,bool>Map[N];
int n,m,v,u;
int edgesum,head[N];
int edgesum2,head2[N]; struct Edge
{
int from,to,next;
Edge(int from=,int to=,int next=) :
from(from),to(to),next(next) {}
}edge[N],edge2[N];
int ins(int from,int to)
{
edge[++edgesum]=Edge(from,to,head[from]);
return head[from]=edgesum;
} int ins2(int from,int to)
{
edge2[++edgesum2]=Edge(from,to,head2[from]);
return head2[from]=edgesum2;
} int dfn[N],tim,low[N],vis[N];
int Stack[N],top,instack[N];
int col[N],colsum; void DFS(int now)
{
dfn[now]=low[now]=++tim; vis[now]=;
Stack[++top]=now; instack[now]=;
for(int i=head[now];i;i=edge[i].next)
{
int to=edge[i].to;
if(instack[to]) low[i]=min(low[i],dfn[to]);
else if(!vis[to])
DFS(to),low[i]=min(low[i],low[to]);
}
if(low[now]==dfn[now])
{
colsum++;
col[now]=colsum;
for(;Stack[top]!=now;top--)
{
col[Stack[top]]=colsum;
instack[Stack[top]]=;
}
instack[now]=;
top--;
}
} int main()
{
scanf("%d%d",&n,&m);
for(;m--;)
{
scanf("%d%d",&u,&v);
ins(u,v);
}
for(int i=;i<=n;i++)
if(!vis[i]) DFS(i);
for(int i=;i<=n;i++)
for(int u=head[i];u;u=edge[i].next)
{
int v=edge[i].to;
if(col[i]!=col[v])
if(Map[col[i]].find(col[v])==Map[col[i]].end())
{
Map[col[i]][col[v]]=;
ins2(col[i],col[v]);
}
}
return ;
}

最新文章

  1. android.graphic.Path
  2. 关于一个程序的编译过程 zkjg面试
  3. qml 封装技巧-利用数据来进行适配
  4. SQL Server AlwaysOn架构及原理
  5. MJRefreshFooterView
  6. 自编的CHtmlView浏览器,怎么截获超连接,不让新窗口在IE中打开
  7. tyvj P1519 博彩游戏(AC自动机+DP滚动数组)
  8. (转载)Linux系统调用及用户编程接口(API)
  9. Nginx学习笔记二基本配置
  10. Java 多线程(二) 线程的实现
  11. DataLoad命令
  12. HDOJ5543 Pick The Sticks
  13. 玩转spring boot——负载均衡与session共享
  14. Delphi TXLSReadWriteII导出Excel
  15. [No0000146]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈3/4
  16. 【LeetCode】大数相乘
  17. 转-[WebServer] Windows操作系统下 Tomcat 服务器运行 PHP 的环境配置
  18. Create a Basic Shader in Shader Forge
  19. 后台判断ajax请求的请求后字段
  20. Word域介绍文章

热门文章

  1. [Linux]第五部分-Linux系统管理员
  2. 杭电 1016 Prime Ring Problem
  3. XML系统学习
  4. 通过meta标签改变浏览器内核做兼容
  5. 关于ZipOupputStream添加压缩包常见问题
  6. Android开发之大位图压缩水印处理
  7. bzj1106: [POI2007]立方体大作战tet
  8. EOJ 3 玩具谜题
  9. Docker容器查看ip地址
  10. php-fpm配置笔记