Matriz de Adjacência:
Na matriz de adjacência uma aresta com origem em x e destino em y existe se G[x][y] é igual a 1, caso seja 0 esta aresta não existe.
Vamos ver uma Matriz de adjacência para entendermos melhor:
Note que o número da linha/coluna representa, na verdade, o vértice.
Como seria o Grafo representado por essa matriz ?
Assim:
Teoria entendida. Agora vamos ver um pouco de programação.
Lendo e montando o grafo em C:
int G[MAXN][MAXN]; int n; //Lendo o número de vértices (n) scanf("%d",&n); //o grafo é zerado, ou seja, não tem nenhuma aresta memset(G,0,sizeof(G)); //Lendo as n arestas for(i=1;i<=n;++i){ scanf("%d %d",&x,&y); //está colocando aresta de x para y e de y para x //grafo bidirecional G[x][y]=1; G[y][x]=1; }Verificando arestas no grafo em C:
int G[MAXN][MAXN]; int n; //Lendo as n arestas for(i=1;i<=n;++i){ for(j=1;j<=n;++j){ if(G[i][j] == 1) printf("Existe aresta de %d para %d",i,j); else printf("Nao existe aresta de %d para %d",i,j); } }
Dúvidas/Comentários/Sugestões através de comentários!