Você está na página 1de 3

//Trabalho 1 GRAFOS - Gustavo Vinícius e Paulo Freire

//====================LISTA DE ADJACÊNCIA C++ ====================\\


//IMPLEMENTAÇÃO DE UM GRAFO

#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

class Grafo
{
int V;
list<int> *adj;

public:
Grafo(int V);
void adicionarAresta(int v1, int v2);

int obterGrauDeSaida(int v);

bool existeVizinho(int v1, int v2);


};

Grafo::Grafo(int V)
{
this->V = V;
adj = new list<int>[V];
}

void Grafo::adicionarAresta(int v1, int v2)


{
adj[v1].push_back(v2);
}

int Grafo::obterGrauDeSaida(int v)
{
return adj[v].size();
}

bool Grafo::existeVizinho(int v1, int v2)


{
if(find(adj[v1].begin(), adj[v1].end(), v2) != adj[v1].end()) {
return true;
}
else {
return false;
}
}

int main()
{
Grafo grafo(4);
grafo.adicionarAresta(0, 1);
grafo.adicionarAresta(0, 3);
grafo.adicionarAresta(1, 2);
grafo.adicionarAresta(3, 1);
grafo.adicionarAresta(3, 2);

cout << "vertice 1: " << grafo.obterGrauDeSaida(1);

if(grafo.existeVizinho(0, 1))
cout << "\n1 eh vizinho de 0\n";
else
cout << "\n1 nao eh vizinho de 0\n";
return 0;
}

//====================MATRIZ DE ADJACÊNCIA EM C ====================\\


//IMPLEMENTAÇÃO DE UM GRAFO

#include<stdio.h>
#define V 5

void iniciar(int arr[][V])


{
int i,j;
for(i = 0; i < V; i++)
for(j = 0; j < V; j++)
arr[i][j] = 0;
}

void addAresta(int arr[][V],int x, int y)


{
arr[x][y] = 1;
}

void print(int arr[][V])


{
int i, j;

for(i = 0; i < V; i++)


{
for(j = 0; j < V; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}

int main()
{
int matriz[V][V];

iniciar(matriz);
addAresta(matriz,0,1);
addAresta(matriz,0,2);
addAresta(matriz,0,3);
addAresta(matriz,1,3);
addAresta(matriz,1,4);
addAresta(matriz,2,3);
addAresta(matriz,3,4);

print(matriz);

return 0;
}

Você também pode gostar