Î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; }