Eu estudo Engenharia da Computação e estou com uma certa dificuldade em classificar o grafo em pseudografo, multigrafo e grafo simples.
Pseudografo quando tem um laço, se na diagonal principal tiver 1, é pseudografo
Multigrafo é quando tem aresta paralela, se tiver um valor acima de 1 é multigrafo.
Grafo simples quando não é pseudografo nem multigrafo.
Implementação:
#include <stdio.h>
int main() {
int MAdj[100][100];
int Ordem;
int origem, destino;
// Zerando matriz de adjacencia
for(int l=0; l < 100; l++)
for (int c=0; c < 100; c++)
MAdj[l][c]=0;
// Ler a ordem do grafo
printf("Entre com a ordem do grafo:");
scanf("%i",&Ordem);
// Ler arestas até origem = -1
printf("Entre com o nó origem (-1 para parar):");
scanf("%i",&origem);
while (origem != -1) {
printf("Entre com o nó destino:");
scanf("%i",&destino);
MAdj[origem][destino]++;
if (origem != destino)
MAdj[destino][origem]++;
printf("Entre com o nó origem (-1 para parar):");
scanf("%i",&origem);
}
// Imprimindo matriz de adjacencia
for(int l=0; l < Ordem; l++) {
for (int c=0; c < Ordem; c++)
printf("[%i] ",MAdj[l][c]);
printf("\n");
}
// Classificar os grafos em Simples, Multigrafos ou Pseudografos
// Simples não possui laço e nem aresta paralala.
// Multigrafo possui ao menos uma aresta paralela.
// Pseudografo possui ao menos um laço.
}
Eu tentei fazer a classificação assim:
for(int l=0; l < Ordem; l++) {
for (int c=0; c < Ordem; c++)
if((l == c) && (MAdj[l][c] != 0)){
printf("PSEUDOGRAFO");
}
}
Só que para multigrafo e grafo simples não to conseguindo...
Pergunta
azbit
Olá irmãos, tudo beleza?
Eu estudo Engenharia da Computação e estou com uma certa dificuldade em classificar o grafo em pseudografo, multigrafo e grafo simples.
Pseudografo quando tem um laço, se na diagonal principal tiver 1, é pseudografo
Multigrafo é quando tem aresta paralela, se tiver um valor acima de 1 é multigrafo.
Grafo simples quando não é pseudografo nem multigrafo.
Implementação:
#include <stdio.h>
int main() {
int MAdj[100][100];
int Ordem;
int origem, destino;
// Zerando matriz de adjacencia
for(int l=0; l < 100; l++)
for (int c=0; c < 100; c++)
MAdj[l][c]=0;
// Ler a ordem do grafo
printf("Entre com a ordem do grafo:");
scanf("%i",&Ordem);
// Ler arestas até origem = -1
printf("Entre com o nó origem (-1 para parar):");
scanf("%i",&origem);
while (origem != -1) {
printf("Entre com o nó destino:");
scanf("%i",&destino);
MAdj[origem][destino]++;
if (origem != destino)
MAdj[destino][origem]++;
printf("Entre com o nó origem (-1 para parar):");
scanf("%i",&origem);
}
// Imprimindo matriz de adjacencia
for(int l=0; l < Ordem; l++) {
for (int c=0; c < Ordem; c++)
printf("[%i] ",MAdj[l][c]);
printf("\n");
}
// Classificar os grafos em Simples, Multigrafos ou Pseudografos
// Simples não possui laço e nem aresta paralala.
// Multigrafo possui ao menos uma aresta paralela.
// Pseudografo possui ao menos um laço.
}
Eu tentei fazer a classificação assim:
for(int l=0; l < Ordem; l++) {
for (int c=0; c < Ordem; c++)
if((l == c) && (MAdj[l][c] != 0)){
printf("PSEUDOGRAFO");
}
}
Só que para multigrafo e grafo simples não to conseguindo...
Alguém poderia me ajudar ?
Obrigado desde já !
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.