fbpx

Problema #576 – AfisCicluri – Rezolvari PBInfo

de Mihai-Alexandru

Într-un graf orientat:

  • numim lanț o succesiune de noduri cu proprietatea că oricare două noduri consecutive în succesiune sunt adiacente (nu contează orientarea arcelor).
  • numim ciclu un lanț în care ultimul nod este identic cu primul și în care nu se repetă arce.

Cerința

Se dă lista arcelor unui graf orientat. Să se afișeze, în ordine lexicografică, toate ciclurile de lungime trei.

Date de intrare

Programul citește de la tastatură numărul n de noduri și numărul m de arce, iar apoi lista arcelor, formată din m perechi de forma i j, cu semnificația că există arc orientat de la i la j.

Date de ieșire

Programul va afișa pe ecran ciclurile cerute, câte un ciclu pe o linie a ecranului, nodurile unui ciclu fiind separate prin exact un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 100

Exemplu

Intrare

5 7
1 3
2 4
3 2
3 4
5 2
5 4
5 1

Ieșire

2 3 4
2 4 3
2 4 5
2 5 4
3 2 4
3 4 2
4 2 3
4 2 5
4 3 2
4 5 2
5 2 4
5 4 2
#include <bits/stdc++.h>
using namespace std;
int a[101][101];
int main()
{
    int n , m , x , y;
    cin >> n >> m;
    for(int i = 1 ; i <= m ; ++i)
    {
        cin >> x >> y;
        a[x][y]=1;
        a[y][x]=1;
    }
    for(int i = 1 ; i <= n ; ++i)
    {
        for(int j = 1 ; j <= n ; ++j)
        {
            for(int r = 1 ; r <= n ; ++r)
            {
                if(a[i][j] == 1 && a[r][i] == 1 && a[j][r] == 1)
                    cout << i << " " << j << " " << r << endl;
            }
        }
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa