Skip to content

Commit c3c10c9

Browse files
Revert "deleting ghost file"
This reverts commit 303ceac.
1 parent 303ceac commit c3c10c9

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

src/c/Questao3_ComponentesConexos.c

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
*
3+
* SIN5013 - Exemplo de Prova do Conteúdo Semestral
4+
*
5+
* 3. Escreva um programa (utilizando um ou mais métodos/funções em código ou pseudo-código) que dado um
6+
* grafo não direcionado com n nós retorne o número de componentes conexos do grafo. Este grafo pode ser
7+
* representado por: (a) uma matriz de adjacências booleana com n x n células correspondendo aos n nós do grafo;
8+
* ou representado por: (b) um arranjo de nós sendo que cada nó possui um arranjo de vizinhos; neste caso,
9+
* considere que Nó é uma classe ou estrutura que possui os seguintes campos [ou atributos]: numVizinhos
10+
* (campo do tipo inteiro com o número de vizinhos do respectivos nó), vizinhos (arranjo de ponteiros para Nós
11+
* com numVizinhos elementos), visitado (campo booleano). Escolha a representação que te convém, se desejar,
12+
* considere que todas as variáveis são globais/static. Assuma que as variáveis já estão devidamente
13+
* inicializadas/preenchidas.
14+
*
15+
* Representação:
16+
* int numNos = n;
17+
* boolean adjacencias[][] = new boolean[n][n];
18+
* boolean visitados[] = new boolean[n];
19+
*
20+
*
21+
* GRAFO
22+
* (0) (1)-------------(4)---------------(5)
23+
* | | | |
24+
* | (6) | | |
25+
* | | | |
26+
* (2) (3)--------------- |
27+
* | |
28+
* -----------------------------------
29+
*
30+
*
31+
* Matriz de Adjacência
32+
* 0 1 2 3 4 5 6
33+
* 0 0 - 1 - - - -
34+
* 1 - 0 - 1 1 - -
35+
* 2 1 - 0 - - - -
36+
* 3 - 1 - 0 1 1 -
37+
* 4 - 1 - 1 0 1 -
38+
* 5 - - - 1 1 0 -
39+
* 6 - - - - - - 0
40+
*
41+
*/
42+
43+
#include <stdio.h>
44+
45+
#define nroNos 7
46+
bool visitados[nroNos];
47+
bool matriz[nroNos][nroNos] = {{ false, false, true, false, false, false, false },
48+
{ false, false, false, true, true, false, false },
49+
{ true, false, false, false, false, false, false },
50+
{ false, true, false, false, true, true, false },
51+
{ false, true, false, true, false, true, false },
52+
{ false, false, false, true, true, false, false },
53+
{ false, false, false, false, false, false, false }};
54+
int componentes = 0;
55+
56+
void zeraVariaveis(){
57+
componentes = 0;
58+
for (int i = 0; i < nroNos; i++)
59+
visitados[i] = false;
60+
}
61+
62+
void visitaVizinhos(int atual){
63+
for (int i = 0; i < nroNos; i++){
64+
if( visitados[i] == false && matriz[atual][i] == true ){
65+
visitados[i] = true;
66+
componentes++;
67+
printf("(%d)-", i);
68+
visitaVizinhos(i);
69+
}
70+
}
71+
}
72+
73+
void calculaComponentesConexos(){
74+
// Percorre todos os 'nós'/'componentes'
75+
for (int i = 0; i < nroNos; i++){
76+
componentes = 0;
77+
if( visitados[i] == false ){ // Se o componente ainda não foi visitado
78+
visitaVizinhos(i); // Chama o método que conta as conexões com os vizinhos
79+
printf("Grupo %d:\nQuantidade de componentes conectados: %d\n\n", i, componentes);
80+
}
81+
}
82+
}
83+
84+
int main(){
85+
86+
zeraVariaveis();
87+
calculaComponentesConexos();
88+
89+
return 0;
90+
}

0 commit comments

Comments
 (0)