Cod sursa(job #1134273)

Utilizator nicnic28nichita trita nicnic28 Data 6 martie 2014 12:19:32
Problema Componente tare conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <vector>
#include <fstream>
//g prin mat de ad si nodul i
//det ctc careia ii apartine i
using namespace std;
ifstream in("gigi.in");

const int N=5+1e5;

vector<int> g[N],s;
int ind[N],low[N],n;
bool ins[N];
int index,lo;
#define min(a,b) a<b?a:b

void ctc(int x){
    s.push_back(x);
    ins[x]=true;
    ind[x]=low[x]=++index;
    for(int i=0 ; i<g[x].size() ; i++){
        if(!ind[g[x][i]]){
            ctc(g[x][i]);
            low[x]=min(low[x],low[g[x][i]]);
        }else if(ins[g[x][i]]){
            low[x]=min(low[x],ind[g[x][i]]);
        }
    }
    if(low[x]==ind[x]){
        int w;
        do{
            w=s.back();
            cout<<w<<" ";
            s.pop_back();
        }while(w!=x);
        cout<<"\n";
    }
}

int main() {
    int a;
    in>>n;
    for(int i=1 ; i<=n ; i++){
        for(int j=1 ; j<=n ; j++){
            in>>a;
            if(a) g[i].push_back(j);
        }
    }
    cin>>a;
    ctc(a);
    return 0;
}