Cod sursa(job #2886238)

Utilizator marateodorescu11Teodorescu Mara marateodorescu11 Data 7 aprilie 2022 14:41:44
Problema Componente tare conexe Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
using namespace std;

int n, m, a[101][101], ctc[105], s[105], p[105], nrc, v[101][101], cnt;

void df1(int x)
{
    s[x] = 1;
    for(int i =1 ; i <= n ; i ++)
        if(s[i] == 0 && a[x][i] == 1)
            df1(i);
}

void df2(int x)
{
    p[x] = 1;
    for(int i =1 ; i <= n ; i ++)
        if(p[i] == 0 && a[i][x] == 1)
            df2(i);
}

int main()
{
    cin >> n >> m;
    while( m-- )
    {
        int i, j;
        cin >> i >> j;
        a[i][j] = 1;
    }
    for(int i = 1 ; i <= n ; i++)
    {

        if(ctc[i] == 0)
        {
            for(int j = 1; j <= n ; j++)
                s[j] = p[j] = 0;
            nrc ++;
            df1(i);
            df2(i);
            for(int j = 1; j <= n ; ++j)
                if(s[j] == 1 && p[j] == 1)
                    ctc[j] = nrc;
        }
    }
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=n; j++)
        {
            if (a[i][j])
            {
                if (ctc[i] != ctc[j])
                {
                    cnt++;
                    v[cnt][1] = i;
                    v[cnt][2] = j;
                }

            }
        }
    }
    cout << cnt << '\n';
    for (int i=1; i<=cnt; i++)
        cout << v[i][1] << " " << v[i][2] << '\n';

    return 0;
}