Cod sursa(job #2472835)

Utilizator mihaela.macarie01@yahoo.comMihaela Macarie [email protected] Data 12 octombrie 2019 23:50:36
Problema Componente tare conexe Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream x("ctc.in");
ofstream y("ctc.out");

int i,j,n,m,k,a[102][102],b[102][102],viz[102],p[102],nr,nrc,vizi[102];

void citire()
{
    for(k=1;k<=m;k++)
    {
        x>>i>>j;
        a[i][0]++;
        a[i][a[i][0]]=j;
        b[j][0]++;
        b[j][b[j][0]]=i;
    }
}

void dfsb(int nod)
{
    int k;
    viz[nod]=0;///aici afisez daca se cer componentele;
    vizi[nod]=nrc;
    for(k=1;k<=b[nod][0];k++)
        if(viz[b[nod][k]])
            dfsb(b[nod][k]);
}
void dfsa(int nod)
{
    int k;
    viz[nod]=1;
    for(k=1;k<=a[nod][0];k++)
        if(viz[a[nod][k]]==0)
            dfsa(a[nod][k]);
    p[++nr]=nod;
}


int main()
{
    x>>n>>m;
    citire();
    for(i=1;i<=n;i++)
        if(viz[i]==0)
            dfsa(i);
    for(i=n;i>0;i--)
        if(viz[p[i]])
        {
            nrc++;
            dfsb(p[i]);
            ///cout<<'\n';
        }
    y<<nrc<<'\n';
    for(i=1;i<=nrc;i++)
    {
        for(j=1;j<=n;j++)
            if(vizi[j]==i)
                y<<j<<" ";
        y<<'\n';
    }
    x.close();
    y.close();
    return 0;
}