Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public bool Alg_20170628_2(int a, int b, int c)
- {
- var Ciclo = false;
- var ElaborazioneTerminataENessunCicloTrovato = false;
- var n_a = get_nodo(a);
- var n_b = get_nodo(b);
- var n_c = get_nodo(c);
- var S = new Stack<Nodo>();
- S.Push(n_c);
- S.Push(n_b);
- S.Push(n_a);
- Action<Nodo> dfs = null;
- dfs = (u) =>
- {
- u.color = Nodo.Color.Gray;
- if (S.Count > 0 && u == S.Peek())
- S.Pop();
- foreach (var v in Adj[u])
- if (v.color == Nodo.Color.White)
- dfs(v);
- else if (S.Count < 1 && v.color == Nodo.Color.Gray)
- Ciclo = true;
- if (!Ciclo && S.Count < 1)
- ElaborazioneTerminataENessunCicloTrovato = true;
- u.color = Nodo.Color.Black;
- };
- Sbianca();
- dfs(n_a);
- var r = (Ciclo && !ElaborazioneTerminataENessunCicloTrovato);
- Console.OutputEncoding = System.Text.Encoding.UTF8;
- Console.WriteLine("Nel grafo {0}, {1}esiste un percorso {2} ~> {3} ~> {4} ~> ∞", Nome, (r ? "" : "Non "), a, b, c);
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement