Sunteți pe pagina 1din 2

/**Sa se redacteze un program care citeste de la intrarea standard doua numere:N-

reprezentand numarul de noduri


si M-reprezentand numarul de arce,apoi citeste M perechi de valori, fiecare pereche
reprezentand un arc.
Programul insereaza N noduri in graf, avand cheile de la 1 la N inclusiv,apoi
insereaza cele M arce.
Programul afiseaza in ordine:
numarul de componente conexe ale grafului
1 daca graful este ciclic, si 0 daca acesta este aciclic**/

#include <stdio.h>
#include <stdlib.h>

int a[10][10], vizitat[10], n, m, nc, ok;

void DFS(int nod) // parcurgere in adancime


{
vizitat[nod] = 1;

for (int i = 1; i <= n; i++)


{
if (a[nod][i] == 1 && vizitat[i] == 0)
DFS(i);
}
}

void nr_cc()
{
for (int i = 1; i <= n; i++)
{
if (vizitat[i] == 0)
{
nc++;
DFS(i);
}
}
printf("%d", nc);
}

int ciclic()
{
for (int i = 2; i <= n; i++)
{
int nr = 0;
for (int j = 1; j < i; j++)
{
if (a[i][j] == 1)
nr++;
}
if (nr > 1)
return 1;
}
return 0;
}

int main()
{
scanf("%d %d", &n, &m);
for (int i = 1; i <= m; i++)
{
int x, y;
scanf("%d %d", &x, &y);
a[x][y] = 1; // marcam cu 1 in matricea de adiacenta
a[y][x] = 1;
}
nr_cc();
printf(" %d", ciclic());
return 0;
}

S-ar putea să vă placă și