Advertisement
luisoncpp

Algoritmo de Tarjan

Mar 17th, 2021 (edited)
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. entrada: grafo G = (V, E)
  2.  
  3. num_visitados = 0
  4. pila = PilaVacía
  5. salida = vector{}
  6. para cada v en V {
  7. si !Visitado[v] {
  8. SCC(v)
  9. }
  10. }
  11.  
  12. SCC(v) {
  13. num_visitados = num_visitados + 1
  14. Visitado[v] = num_visitados
  15. ArcoMasAlto[v] = num_visitados
  16. pila.push(v)
  17.  
  18. para cada vertice w en vecinos(v) {
  19. si !Visitado[w]{
  20. SCC(w)
  21. ArcoMasAlto[v] = min(ArcoMasAlto[v], ArcoMasAlto[w])
  22. } sino pero pila.contiene(w) {
  23. ArcoMasAlto[v] = min(ArcoMasAlto[v], Visitado[w])
  24. }
  25. }
  26.  
  27. si ArcoMasAlto[v] = Visitado[v] {
  28. componente = vector{}
  29. mientras Visitado[pila.top()] >= v {
  30. componente.push(pila.pop());
  31. }
  32. salida.push(componente)
  33. }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement