Advertisement
Davencode

Untitled

Sep 16th, 2021
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. Sia dato un grafo orientato G=<V,E> rappresentato con liste di adiacenza, ed un array B contenente un sottoinsieme dei vertici di G (B incluso in V) e due vertici u,v € V ed un intero k.
  2.  
  3. Scrivere algo che, dati in ingresso (G,B,u,v,k) calcoli in tempo lineare sulla dim. di G l'insieme dei vertici B' incluso in B contenente tutti e soli i vertici di A che soddisfano tali condizioni:
  4.  
  5. - b è raggiungibile da v senza passare da u
  6. - b raggiunge u con un percorso di lunghezza < k
  7.  
  8. ALGO(G,B,u,v,k)
  9. INIT(G)
  10. G=TRASPOSTA(GT) //faccio partire il grafo dal vertice v
  11. DFS_VISIT(GT,v,c1) //Parte una DFS_VISIT dal vertice v fino alla fine del grafo
  12. for each b in B do //itero sugli elementi dell'insieme B e vedo
  13. if(c1[b]=nero && c1[u]=bianco )then //se tramite dfs_visit so passato per b e non per u che è ancora bianco
  14. BFS(G,B,c2) //effettuo BFS per determinarmi le distanze tra i vertici
  15. if(c2[u]=nero && d[u]<k)then //verifico se il colore di arrivo è nero dopo la BFS e se la distanza è < k
  16. B'= B' u {u} //aggiungo a B'
  17. else
  18. B'= NIL //non aggiunge nulla
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement