Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public bool Alg_20170628(int a, int b, int c, int d)
- {
- var n_a = get_nodo(a);
- var n_b = get_nodo(b);
- var n_c = get_nodo(c);
- var n_d = get_nodo(d);
- var passati_tutti = false;
- var ciclo = false;
- Action<Nodo> dfs = null;
- dfs = (u) =>
- {
- u.color = Nodo.Color.Gray;
- foreach (var v in Adj[u])
- {
- if (v == n_d)
- passati_tutti = (n_a.color != Nodo.Color.White && n_b.color != Nodo.Color.White && n_c.color != Nodo.Color.White);
- if (v.color == Nodo.Color.White)
- dfs(v);
- else if (passati_tutti && v.color == Nodo.Color.Gray)
- ciclo = true;
- }
- if (passati_tutti && !ciclo)
- throw new Exception("Non c'è il ciclo");
- u.color = Nodo.Color.Black;
- };
- Sbianca();
- try
- {
- dfs(n_a);
- }
- catch
- {
- // no ciclo
- }
- passati_tutti = (n_a.color != Nodo.Color.White && n_b.color != Nodo.Color.White && n_c.color != Nodo.Color.White && n_d.color != Nodo.Color.White);
- var r = ciclo && passati_tutti;
- Console.OutputEncoding = System.Text.Encoding.UTF8;
- Console.WriteLine("Nel grafo {0}, {1}esiste un percorso {2} ~> {3} ~> {4} ~> {5} ~> ∞", Nome, (r ? "" : "Non "), a, b, c, d);
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement