int main(void) { grafo g = le_grafo(stdin); long int d = diametro(g); printf("%s\n", nome(g)); printf("%sdirecionado\n", direcionado(g) ? "" : "não "); if ( direcionado(g) ) printf("%sfortemente conexo\n", fortemente_conexo(g) ? "" : "não "); else printf("%sconexo\n", conexo(g) ? "" : "des"); if ( d == infinito ) printf("diâmetro: oo\n"); else printf("diâmetro: %ld\n", d); destroi_grafo(escreve_grafo(stdout, distancias(g))); printf("\n"); return ! destroi_grafo(g); }
//------------------------------------------------------------------------------ int fortemente_conexo(grafo g) { /* O procedimento usado é o mesmo para verificar se um grafo não direcionado é conexo, a diferença é que a matriz é assimétrica pois cada arco é utilizado apenas em um sentido (e não nos dois como nas arestas), portanto, utilizando a função conexo é possível verificar se o grafo também é fortemente conexo */ return conexo(g); }
int main() { int i, n, x, y, teste=1; while(scanf("%d", &n) && n) { memset(grau, 0, sizeof(grau)); memset(adj, 0, sizeof(adj)); for(i=0;i<n;i++) { scanf("%d%d", &x, &y); grau[x]++; grau[y]++; adj[x][y]=1; adj[y][x]=1; } printf("Teste %d\n", teste++); if(conexo()) { if(euleriano()) printf("sim\n\n"); else printf("nao\n\n"); } else printf("nao\n\n"); } return 0; }
int main(){ int tam_entrada; char palavra[MAX]; int quant_palavras; scanf("%d", &tam_entrada); if(tam_entrada > MAX_T) return 0; for (int i = 0; i < tam_entrada; i++){ // Inicializacao, zerando tudo for (int l = 0; l < MAX_ALFA; l++){ graus[l] = graus_vertice_origem[l] = graus_vertice_destino[l] = 0; visitados[l] = 0; for (int m = 0; m < MAX_ALFA; ++m){ grafo[l][m] = 0; } } quant_vertices = 0; // Lendo scanf("%d", &quant_palavras); if(quant_palavras > MAX_N || quant_palavras < 1) return 0; for (int j = 0; j < quant_palavras; j++){ scanf("%s", &palavra[0]); int k; for (k = 0; palavra[k+1] != '\0'; k++); if(k == 0) return 0; int o = palavra[0]-'a'; int d = palavra[k]-'a'; graus_vertice_origem[o]++; graus_vertice_destino[d]++; grafo[o][d] = 1; graus[o]++; graus[d]++; } for (int j = 0; j < MAX_ALFA; j++) { if(graus[j] > 0) quant_vertices++; } /* if (1) { printf("\nQuantidade de vertices: %d\n", quant_vertices); for (int l = 0; l < MAX_ALFA; ++l){ printf("%d ", graus_vertice_origem[l]); } printf("\n"); for (int l = 0; l < MAX_ALFA; ++l){ printf("%d ", graus_vertice_destino[l]); } printf("\n"); for (int l = 0; l < MAX_ALFA; ++l){ printf("%d ", visitados[l]); } printf("\n"); } if(v) printf("Sim pode ser euleriano\n"); if(c) printf("Eh conexo\n"); */ bool v = pode_ser_euleriano(); bool c = conexo(); if( v && c ){ printf("Ordering is possible.\n"); }else{ printf("The door cannot be opened.\n"); } } return 0; }
//------------------------------------------------------------------------------ int main(void) { struct grafo *g, *d, *c; struct vertice *v; struct no *n; lista l; g = le_grafo(stdin); escreve_grafo(stdout, g); if((l = ordena(g)) != NULL) { for(n = primeiro_no(l); n != NULL; n = proximo_no(n)) { v = (struct vertice *) conteudo(n); fprintf(stdout, "%s\n", nome_vertice(v)); } destroi_lista(l, nao_destroi_nos); } if((l = componentes(g)) != NULL) { for(n = primeiro_no(l); n != NULL; n = proximo_no(n)) { c = (struct grafo *) conteudo(n); escreve_grafo(stdout, c); } destroi_lista(l, destroi_grafo); } d = arvore_geradora_minima(g); if(d != NULL) { escreve_grafo(stdout, d); destroi_grafo(d); } /* d = arborescencia_caminhos_minimos(g, v); if(d != NULL) { escreve_grafo(stdout, d); destroi_grafo(d); } */ d = distancias(g); if(d != NULL) { escreve_grafo(stdout, d); destroi_grafo(d); } fprintf(stdout, "Diametro = %ld\n", diametro(g)); if(conexo(g)) { fprintf(stdout, "Conexo!\n"); } else { fprintf(stdout, "Não é conexo!\n"); } if(fortemente_conexo(g)) { fprintf(stdout, "Fortemente conexo!\n"); } else { fprintf(stdout, "Não é fortemente conexo!\n"); } /*if((l_blocos = blocos(g)) != NULL) { fprintf(stderr, "\n--Blocos criados:\n" ); for(n = primeiro_no(l); n != NULL; n = proximo_no(n)) { c = (struct grafo *) conteudo(n); escreve_grafo(stdout, c); } destroi_lista(l_blocos, destroi_grafo); }*/ destroi_grafo(g); return 0; }