TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

O Dudu Faz Serviço

Por:   •  25/8/2019  •  Projeto de pesquisa  •  277 Palavras (2 Páginas)  •  121 Visualizações

Página 1 de 2

#include <stdio.h>

#include <vector>

using namespace std;

#define MAXV 10000 //quantidade máxima de vértices

#define BRANCO 0

#define CINZA 1

#define PRETO 2

#define NULO -1

vector<int> l[MAXV + 1]; //lista de adjacências

int N; //quantidade de vértices

int c[MAXV+1]; //cor

int d[MAXV+1]; //tempo de descoberta

int t[MAXV+1]; //tempo de término

int a[MAXV+1]; //antecessor na árvore de busca

int tempo; //tempo corrente durante execução do algoritmo

int loop;

void DFS_VISIT(int u){

c[u] = CINZA;

tempo++;

d[u] = tempo;

int i,v;

for(int v: l[u]){ //percorre cada elemento da lista l[u]

if(c[v] == CINZA) loop = 1;

if(c[v]==BRANCO){

a[v] = u;

DFS_VISIT(v);

}

}

c[u] = PRETO;

tempo++;

t[u] = tempo;

}

void DFS(){

int u;

for(u = 1; u <= N; u++){

c[u] = BRANCO;

d[u] = NULO;

t[u] = NULO;

a[u] = NULO;

}

tempo=0;

for(u = 1; u <= N; u++){

if(c[u] == BRANCO)

DFS_VISIT(u);

}

}

void imprimir(int vet[]){

int i;

for(i = 1; i <= N; i++){

printf("%d, ", vet[i]);

}

printf("\n");

}

void inicializar(){

int u;

for(u = 0; u <= MAXV; u++){

l[u] = vector<int>(); //cria uma lista vazia para cada vértice u

}

}

int

...

Baixar como (para membros premium)  txt (1.5 Kb)   pdf (33 Kb)   docx (8.3 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com