Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // dato un insieme di etichette P, si scriva un ALG(G, v, p) verifichi se tutti i percorsi infiniti che partono da v passano da almeno un vertice etichettato con p
- public bool Algo_20160623(int v, string p)
- {
- var time = 0;
- var ciclo = false;
- var passato_per_etichetta = false;
- Action<Nodo> Visit = null;
- Visit = (u) =>
- {
- time++;
- u.discovered = time;
- u.color = Nodo.Color.Gray;
- var e = getEtichetta(u);
- if (p.Equals(e))
- passato_per_etichetta = true;
- foreach (var w in Adj[u])
- switch (w.color)
- {
- case Nodo.Color.White:
- w.Pred = u;
- Visit(w);
- break;
- case Nodo.Color.Gray:
- ciclo = true;
- break;
- }
- time++;
- u.finished = time;
- u.color = Nodo.Color.Black;
- };
- Visit(get_nodo(v));
- var r = ciclo && passato_per_etichetta;
- Console.WriteLine("Per il grafo {0} {1}tutti i percorsi infiniti che partono da {2} passano da almeno un vertice etichettato con {3}", Nome, (r ? "" : "non "), v, p);
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement