Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- entrada: grafo G = (V, E)
- num_visitados = 0
- pila = PilaVacía
- salida = vector{}
- para cada v en V {
- si !Visitado[v] {
- SCC(v)
- }
- }
- SCC(v) {
- num_visitados = num_visitados + 1
- Visitado[v] = num_visitados
- ArcoMasAlto[v] = num_visitados
- pila.push(v)
- para cada vertice w en vecinos(v) {
- si !Visitado[w]{
- SCC(w)
- ArcoMasAlto[v] = min(ArcoMasAlto[v], ArcoMasAlto[w])
- } sino pero pila.contiene(w) {
- ArcoMasAlto[v] = min(ArcoMasAlto[v], Visitado[w])
- }
- }
- si ArcoMasAlto[v] = Visitado[v] {
- componente = vector{}
- mientras Visitado[pila.top()] >= v {
- componente.push(pila.pop());
- }
- salida.push(componente)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement