Ir para conteúdo
Fórum Script Brasil

LuanBsilvaa

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre LuanBsilvaa

LuanBsilvaa's Achievements

0

Reputação

  1. Grafo::Grafo(int V) { this->V = V; // atribui o número de vértices adj = new list<int>[V]; // cria as listas } void Grafo::adicionarAresta(int v1, int v2) { // adiciona vértice v2 à lista de vértices adjacentes de v1 adj[v1].push_back(v2); } void Grafo::dfs(int v) { stack<int> pilha; bool visitados[V]; // vetor de visitados // marca todos como não visitados for(int i = 0; i < V; i++) visitados[i] = false; while(true) { if(!visitados[v]) { cout << "Visitando vertice " << v << " ...\n"; visitados[v] = true; // marca como visitado pilha.push(v); // insere "v" na pilha } bool achou = false; list<int>::iterator it; // busca por um vizinho não visitado for(it = adj[v].begin(); it != adj[v].end(); it++) { if(!visitados[*it]) { achou = true; break; } } if(achou) v = *it; // atualiza o "v" else { // se todos os vizinhos estão visitados ou não existem vizinhos // remove da pilha pilha.pop(); // se a pilha ficar vazia, então terminou a busca if(pilha.empty()) break; // se chegou aqui, é porque pode pegar elemento do topo v = pilha.top(); } } }
×
×
  • Criar Novo...