[JSOI2010] 连通数 - 强连通分量,缩点

复习一下手工 tarjan

#include 
using namespace std;

vector  g[2005],scc[2005];
int ind,f[2005],siz[2005],dfn[2005],low[2005],vis[2005],s[2005],bel[2005],top,tot,n,m,t1,t2,t3;
char ch[2005];
void dfs(int p) {
    vis[p]=1;
    s[++top]=p;
    dfn[p]=low[p]=++ind;
    for(int i=0;i G[2005];

int main() {
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>ch+1;
        for(int j=1;j<=n;j++) {
            if(ch[j]=='1') g[i].push_back(j);
        }
    }
    for(int i=1;i<=n;i++) {
        if(vis[i]==0) {
            dfs(i);
        }
    }
    for(int i=1;i<=tot;i++) {
        for(int j=0;j

你可能感兴趣的:([JSOI2010] 连通数 - 强连通分量,缩点)