Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.
- 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:
- - b è raggiungibile da v senza passare da u
- - b raggiunge u con un percorso di lunghezza < k
- ALGO(G,B,u,v,k)
- INIT(G)
- G=TRASPOSTA(GT) //faccio partire il grafo dal vertice v
- DFS_VISIT(GT,v,c1) //Parte una DFS_VISIT dal vertice v fino alla fine del grafo
- for each b in B do //itero sugli elementi dell'insieme B e vedo
- if(c1[b]=nero && c1[u]=bianco )then //se tramite dfs_visit so passato per b e non per u che è ancora bianco
- BFS(G,B,c2) //effettuo BFS per determinarmi le distanze tra i vertici
- if(c2[u]=nero && d[u]<k)then //verifico se il colore di arrivo è nero dopo la BFS e se la distanza è < k
- B'= B' u {u} //aggiungo a B'
- else
- B'= NIL //non aggiunge nulla
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement