码迷,mamicode.com
首页 > 移动开发 > 详细

强联通

时间:2019-02-24 11:02:47      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:pac   class   memset   include   sizeof   void   names   bsp   dfs   

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
vector<int> g[maxn];
vector<int> rg[maxn];
vector<int> vs;
bool vis[maxn];
int camp[maxn];
void add_edge(int x,int y) { g[x].push_back(y);   rg[y].push_back(x); }
void dfs(int x)
{
    vis[x]=1;
    for(int i=0;i<g[x].size();i++)   if(!vis[g[x][i]]) dfs(g[x][i]);
    vs.push_back(x);
}
void rdfs(int x,int k)
{
    vis[x]=1;
    camp[k]=k;
    for(int i=0;i<rg[x].size();i++)   if(!vis[rg[x][i]]) rdfs(rg[x][i],k++);
}
int main()
{
    int n,m; cin>>n>>m;
    for(int i=1;i<=m;i++)   {  int x,y; add_edge(x,y);  }
    for(int i=1;i<=n;i++)   {  if(!vis[i]) dfs(i);      }
    memset(vis,0,sizeof(vis));   int k=0;
    for(int i=vs.size();i>=0;i--) {   if(!vis[vs[i]]) rdfs(vs[i],k++);  }
}

 

强联通

标签:pac   class   memset   include   sizeof   void   names   bsp   dfs   

原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/10425355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!