SlideShare a Scribd company logo
1 of 10
Algoritmo de Kosaraju
Marcos Castro
Componentes fortemente conexos
• Seja um grafo G(V, E) onde V é o conjunto de vértices e E é o conjunto de arestas,
um subconjunto de vértices C (C ⊆ V) é um componente fortemente conexo se
respeita as propriedades:
• 1) Para todo par de vértices (u, v) em C, existe um caminho de u à v e vice-versa.
• 2) C é maximal em respeito à propriedade 1.
• Quais são os componentes fortemente conexos do grafo abaixo?
0
2
1 3
4
Componentes fortemente conexos
• Seja um grafo G(V, E) onde V é o conjunto de vértices e E é o conjunto de arestas,
um subconjunto de vértices C (C ⊆ V) é um componente fortemente conexo se
respeita as propriedades:
• 1) Para todo par de vértices (u, v) em C, existe um caminho de u à v e vice-versa.
• 2) C é maximal em respeito à propriedade 1.
• Quais são os componentes fortemente conexos do grafo abaixo?
0
2
1 3
4
Componentes fortemente conexos
• Aplicação: em redes sociais, pode-se detectar grupos de pessoas fortemente
conectadas para sugerir algo como páginas, games, amizades.
• Como detectar todos os componentes fortemente conexos?
• Iremos utilizar o algoritmo de Kosaraju.
• A complexidade desse algoritmo é O(V + E) utilizando lista de adjacência.
• Primeiramente será explicado o algoritmo.
• Após a explicação, será disponibilizado um link com a implementação em C++.
Algoritmo
• Crie uma pilha vazia e faça uma DFS no grafo.
• Ao final de cada DFS, insira o vértice na pilha como mostra o algoritmo:
Inicialmente o vetor de visitados
é preenchido com falso.
Algoritmo
• Obtenha o grafo transposto
• Basta inverter as orientações das arestas do grafo original.
• Os vértices são os mesmos do grafo original, só inverte as arestas!
Algoritmo
• Marque novamente todos os vértices como não visitados para a segunda DFS.
• Enquanto a pilha não for vazia:
• Obtenha o elemento do topo.
• Remova o elemento do topo.
• Se esse elemento não foi visitado, realize uma DFS nele.
Algoritmo
• Algoritmo da função DFS:
Código
• A implementação foi feita em C++, segue o link:
• https://gist.github.com/marcoscastro/362854424c34bcec92cb
Contato
mcastrosouza@live.com
www.geeksbr.com
www.github.com/marcoscastro
www.youtube.com/c/marcoscastrosouza

More Related Content

What's hot

Banco dados lógico (dedutivo)
Banco dados lógico (dedutivo)Banco dados lógico (dedutivo)
Banco dados lógico (dedutivo)Fabiano Da Ventura
 
Aula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAndrei Carniel
 
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallComplexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallLucas Vinícius
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de errosFaculdade Mater Christi
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoLeinylson Fontinele
 
IntroduccióN A La LóGica Difusa
IntroduccióN A La LóGica DifusaIntroduccióN A La LóGica Difusa
IntroduccióN A La LóGica DifusaESCOM
 
Função quadratica história e curiosidades
Função quadratica história e curiosidadesFunção quadratica história e curiosidades
Função quadratica história e curiosidadesmonica_cassia
 
Bellman-Ford Algorithm.pptx
Bellman-Ford Algorithm.pptxBellman-Ford Algorithm.pptx
Bellman-Ford Algorithm.pptxAshikHridoy2
 
Bfs and dfs in data structure
Bfs and dfs in  data structure Bfs and dfs in  data structure
Bfs and dfs in data structure Ankit Kumar Singh
 
Lei do anulamento do produto
Lei do anulamento do produtoLei do anulamento do produto
Lei do anulamento do produtoRaquel Antunes
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockWellington Oliveira
 
Arquitetura de-computadores
Arquitetura de-computadoresArquitetura de-computadores
Arquitetura de-computadoresPimentel
 
Cálculo diferencial e integral de várias variáveis unid iii
Cálculo diferencial e integral de várias variáveis   unid iiiCálculo diferencial e integral de várias variáveis   unid iii
Cálculo diferencial e integral de várias variáveis unid iiiBruno Luz
 
Cascateamento de switch
Cascateamento de switchCascateamento de switch
Cascateamento de switchCarlos Veiga
 
Cs6702 graph theory and applications 2 marks questions and answers
Cs6702 graph theory and applications 2 marks questions and answersCs6702 graph theory and applications 2 marks questions and answers
Cs6702 graph theory and applications 2 marks questions and answersappasami
 
Origem E Fundamentos Da FunçãO QuadráTica Tarefa Final
Origem E Fundamentos Da FunçãO QuadráTica   Tarefa FinalOrigem E Fundamentos Da FunçãO QuadráTica   Tarefa Final
Origem E Fundamentos Da FunçãO QuadráTica Tarefa Finalguest7fc9be
 

What's hot (20)

Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
 
Banco dados lógico (dedutivo)
Banco dados lógico (dedutivo)Banco dados lógico (dedutivo)
Banco dados lógico (dedutivo)
 
Aula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NAT
 
Grafos
GrafosGrafos
Grafos
 
Grafos e Árvores
Grafos e ÁrvoresGrafos e Árvores
Grafos e Árvores
 
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallComplexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de erros
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
 
IntroduccióN A La LóGica Difusa
IntroduccióN A La LóGica DifusaIntroduccióN A La LóGica Difusa
IntroduccióN A La LóGica Difusa
 
Função quadratica história e curiosidades
Função quadratica história e curiosidadesFunção quadratica história e curiosidades
Função quadratica história e curiosidades
 
Bellman-Ford Algorithm.pptx
Bellman-Ford Algorithm.pptxBellman-Ford Algorithm.pptx
Bellman-Ford Algorithm.pptx
 
Bfs and dfs in data structure
Bfs and dfs in  data structure Bfs and dfs in  data structure
Bfs and dfs in data structure
 
Lei do anulamento do produto
Lei do anulamento do produtoLei do anulamento do produto
Lei do anulamento do produto
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 Deadlock
 
Arquitetura de-computadores
Arquitetura de-computadoresArquitetura de-computadores
Arquitetura de-computadores
 
Cálculo diferencial e integral de várias variáveis unid iii
Cálculo diferencial e integral de várias variáveis   unid iiiCálculo diferencial e integral de várias variáveis   unid iii
Cálculo diferencial e integral de várias variáveis unid iii
 
Teoria dos Grafos
Teoria dos GrafosTeoria dos Grafos
Teoria dos Grafos
 
Cascateamento de switch
Cascateamento de switchCascateamento de switch
Cascateamento de switch
 
Cs6702 graph theory and applications 2 marks questions and answers
Cs6702 graph theory and applications 2 marks questions and answersCs6702 graph theory and applications 2 marks questions and answers
Cs6702 graph theory and applications 2 marks questions and answers
 
Origem E Fundamentos Da FunçãO QuadráTica Tarefa Final
Origem E Fundamentos Da FunçãO QuadráTica   Tarefa FinalOrigem E Fundamentos Da FunçãO QuadráTica   Tarefa Final
Origem E Fundamentos Da FunçãO QuadráTica Tarefa Final
 

Viewers also liked

Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Clausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigidoClausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigidoguest4b1d8bc
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 
Agrupamento (clustering) - K-Means
Agrupamento (clustering) - K-MeansAgrupamento (clustering) - K-Means
Agrupamento (clustering) - K-MeansMarcos Castro
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Marcos Castro
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 

Viewers also liked (20)

Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Clausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigidoClausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigido
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Agrupamento (clustering) - K-Means
Agrupamento (clustering) - K-MeansAgrupamento (clustering) - K-Means
Agrupamento (clustering) - K-Means
 
Python - Set
Python - SetPython - Set
Python - Set
 
Fila de prioridades
Fila de prioridadesFila de prioridades
Fila de prioridades
 
Binary heap
Binary heapBinary heap
Binary heap
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 

Similar to Algoritmo de Kosaraju

Seminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraSeminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraIFPB
 
Introdução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitosIntrodução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitosssusera0fc94
 
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Murilo Adriano Vasconcelos
 

Similar to Algoritmo de Kosaraju (8)

Grafos
GrafosGrafos
Grafos
 
Seminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraSeminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra Lara
 
Introdução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitosIntrodução aos grafos: Principais conceitos
Introdução aos grafos: Principais conceitos
 
Grafos_1.pptx
Grafos_1.pptxGrafos_1.pptx
Grafos_1.pptx
 
Aula Grafos
Aula GrafosAula Grafos
Aula Grafos
 
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
 
Fluxo a Custo Mínimo
Fluxo a Custo MínimoFluxo a Custo Mínimo
Fluxo a Custo Mínimo
 
Questesdetecnologia ano2003
Questesdetecnologia ano2003Questesdetecnologia ano2003
Questesdetecnologia ano2003
 

More from Marcos Castro

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicasMarcos Castro
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Marcos Castro
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Marcos Castro
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com BiopythonMarcos Castro
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 

More from Marcos Castro (13)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicas
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com Biopython
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 

Recently uploaded

Estudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docxEstudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docxDanielaMayraArajoOli1
 
Bilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptxBilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptxSusanaRangel12
 
Apresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptxApresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptxTatianaMalcher
 
NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1conselhosade2
 
Planejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestaisPlanejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestaisandersonwebler1
 
FOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdfFOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdfRobertoLopes438472
 
Historia da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptxHistoria da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptxCarlosMelo486412
 

Recently uploaded (7)

Estudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docxEstudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docx
 
Bilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptxBilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptx
 
Apresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptxApresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptx
 
NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1
 
Planejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestaisPlanejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestais
 
FOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdfFOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdf
 
Historia da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptxHistoria da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptx
 

Algoritmo de Kosaraju

  • 2. Componentes fortemente conexos • Seja um grafo G(V, E) onde V é o conjunto de vértices e E é o conjunto de arestas, um subconjunto de vértices C (C ⊆ V) é um componente fortemente conexo se respeita as propriedades: • 1) Para todo par de vértices (u, v) em C, existe um caminho de u à v e vice-versa. • 2) C é maximal em respeito à propriedade 1. • Quais são os componentes fortemente conexos do grafo abaixo? 0 2 1 3 4
  • 3. Componentes fortemente conexos • Seja um grafo G(V, E) onde V é o conjunto de vértices e E é o conjunto de arestas, um subconjunto de vértices C (C ⊆ V) é um componente fortemente conexo se respeita as propriedades: • 1) Para todo par de vértices (u, v) em C, existe um caminho de u à v e vice-versa. • 2) C é maximal em respeito à propriedade 1. • Quais são os componentes fortemente conexos do grafo abaixo? 0 2 1 3 4
  • 4. Componentes fortemente conexos • Aplicação: em redes sociais, pode-se detectar grupos de pessoas fortemente conectadas para sugerir algo como páginas, games, amizades. • Como detectar todos os componentes fortemente conexos? • Iremos utilizar o algoritmo de Kosaraju. • A complexidade desse algoritmo é O(V + E) utilizando lista de adjacência. • Primeiramente será explicado o algoritmo. • Após a explicação, será disponibilizado um link com a implementação em C++.
  • 5. Algoritmo • Crie uma pilha vazia e faça uma DFS no grafo. • Ao final de cada DFS, insira o vértice na pilha como mostra o algoritmo: Inicialmente o vetor de visitados é preenchido com falso.
  • 6. Algoritmo • Obtenha o grafo transposto • Basta inverter as orientações das arestas do grafo original. • Os vértices são os mesmos do grafo original, só inverte as arestas!
  • 7. Algoritmo • Marque novamente todos os vértices como não visitados para a segunda DFS. • Enquanto a pilha não for vazia: • Obtenha o elemento do topo. • Remova o elemento do topo. • Se esse elemento não foi visitado, realize uma DFS nele.
  • 9. Código • A implementação foi feita em C++, segue o link: • https://gist.github.com/marcoscastro/362854424c34bcec92cb