Cerinţa
Se dă lista muchiilor unui graf neorientat. Să se verifice dacă graful este sau nu conex.
Date de intrare
Fişierul de intrare conex.in
conţine pe prima linie numărul n
, reprezentând numărul de vârfuri ale grafului. Fiecare dintre următoarele linii conține câte o pereche de numere i j
, cu semnificația că există muchie între i
și j
.
Date de ieşire
Fişierul de ieşire conex.out
va conţine mesajul DA
, dacă graful dat este conex, respectiv NU
, în caz contrar.
Restricţii şi precizări
1 ≤ n ≤ 100
1 ≤ i , j ≤ n
- în fișierul de intrare muchiile se pot repeta
Exemplu
conex.in
5 1 4 3 5 2 4
conex.out
NU
#include <bits/stdc++.h> using namespace std; ifstream cin("conex.in"); ofstream cout("conex.out"); int n , m , x , y , a[101][101] , ok , v[101]; void dfs(int x) { v[x] = 1; for(int i = 1 ; i <= n ; i++) if(!v[i] && a[x][i] == 1) dfs(i) , v[i] = 1; } int main() { cin >> n; while(cin >> x >> y) a[x][y] = a[y][x] = 1 , m++; dfs(1); for(int i = 1 ; i <= n && !ok; i++) if(v[i] == 0) ok++; if(ok != 0) cout << "NU"; else cout << "DA"; }