#include<stdio.h>
#include<iostream>
#include<math.h>
#include<queue>
#include<vector>
#include<string.h>
#include<algorithm>
#include<stack> #define N 1000
#define INF64 1152921504606846976
#define INF32 2147483647
#define ll int
using namespace std; vector<int>G[N],Tarjan[N];//Tarjan从0开始存下所有的强连通,其大小用 tar记录,注意分量中只有一个点时,则不连通(Tarjan[tar]<2 则应该为0 )
stack<int>mystack;
int n,m,tar;
int DFN[N],Low[N],Time;// 小写的time会redeclared
bool instack[N],vis[N]; inline ll Max(ll a,ll b){return a>b?a:b;}
inline ll Min(ll a,ll b){return a<b?a:b;} void tarjan(int u){
int v;
DFN[u]=Low[u]=++Time;
mystack.push(u); instack[u]=true;
vis[u]=true;
for(int i=0;i<G[u].size();i++)//遍历u的所有子节点
{
v=G[u][i];
if(!DFN[v])
{
tarjan(v);
Low[u]=Min(Low[u],Low[v]);
}
else if(instack[v])
Low[u]=Min(Low[u],DFN[v]);
}
if(DFN[u]==Low[u])
{
do
{
v=mystack.top(); mystack.pop(); instack[v]=false;
Tarjan[tar].push_back(v);
}while(u!=v);
tar++;
}
}
void InitTar(){
memset(DFN,0,sizeof(DFN)); memset(Low,0,sizeof(Low));
memset(instack,0,sizeof(instack));
memset(vis,0,sizeof(vis));//标记已搜过的点
while(!mystack.empty())mystack.pop();
for(int i=0;i<n;i++)Tarjan[i].clear();
tar=Time=0;
}
int main(){
int i,j;
while(~scanf("%d%d",&n,&m)){
for(i=0;i<n;i++)G[i].clear();
while(m--)
{
int u,v; scanf("%d %d",&u,&v);
G[u].push_back(v);
}
InitTar();
for(j=0;j<n;j++)//可能图是不连通的,所以枚举所有未去过的点
if(!vis[j]) tarjan(j);
}
return 0;
}

最新文章

  1. ORB-SLAM(三)地图初始化
  2. 基于AutoCAD的ObjectARX之NET扩展(mcnetarx)-AcdbEntNext、AcdbEntLast
  3. resignFirstResponder
  4. COGS8 备用交换机
  5. window.location.search
  6. easyui中带checkbox框的tree
  7. 关于Struts框架简介
  8. Math.round()、Math.ceil()、Math.floor()与Math.random()的区别?
  9. filestream 读取视频文件
  10. LeetCode——Path Sum II
  11. Modelsimse10.1如何编译altera库文件以支持IP仿真
  12. luogu P5291 [十二省联考2019]希望
  13. Python基础2(2017-07-18)
  14. 常见的php模式
  15. 【递推】【HDOJ】
  16. Python sys.argv[] 的用法
  17. linux配置nginx
  18. Unity3d开发“类三消”游戏
  19. Mybatis批量insert报错的解决办法【the right syntax to use near &#39;&#39; at line...】
  20. shift + 空格 快捷键 使输入法 在全角和半角直接切换。。 但是全角输入一个 空格 ,会造成jsp页面 无法正常解析。。比如 无法获得参数。。

热门文章

  1. SQLSERVER2014集群实战——IP引发的坑
  2. CodeForces600E Lomsat gelral 线段树合并
  3. [COGS2639]偏序++
  4. (Nginx) URL REWRITE
  5. 安装第三方jar包的两种方式
  6. Elasticsearch中document的基础知识
  7. PAT甲级1127. ZigZagging on a Tree
  8. 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”
  9. ssh 远程链接时出现错误提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
  10. webpack入门(1)