Advertisement
mikymaione

Alg_20170628 t2

Jul 6th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.15 KB | None | 0 0
  1. public bool Alg_20170628(int a, int b, int c, int d)
  2. {
  3.     var n_a = get_nodo(a);
  4.     var n_b = get_nodo(b);
  5.     var n_c = get_nodo(c);
  6.     var n_d = get_nodo(d);
  7.  
  8.     var passati_tutti = false;
  9.     var ciclo = false;
  10.  
  11.     Action<Nodo> dfs = null;
  12.     dfs = (u) =>
  13.     {
  14.         u.color = Nodo.Color.Gray;
  15.  
  16.         foreach (var v in Adj[u])
  17.         {
  18.             if (v == n_d)
  19.                 passati_tutti = (n_a.color != Nodo.Color.White && n_b.color != Nodo.Color.White && n_c.color != Nodo.Color.White);
  20.  
  21.             if (v.color == Nodo.Color.White)
  22.                 dfs(v);
  23.             else if (passati_tutti && v.color == Nodo.Color.Gray)
  24.                 ciclo = true;
  25.         }
  26.  
  27.         if (passati_tutti && !ciclo)
  28.             throw new Exception("Non c'è il ciclo");
  29.  
  30.         u.color = Nodo.Color.Black;
  31.     };
  32.  
  33.     Sbianca();
  34.  
  35.     try
  36.     {
  37.         dfs(n_a);
  38.     }
  39.     catch
  40.     {
  41.         // no ciclo
  42.     }
  43.  
  44.     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);
  45.     var r = ciclo && passati_tutti;
  46.  
  47.     Console.OutputEncoding = System.Text.Encoding.UTF8;
  48.     Console.WriteLine("Nel grafo {0}, {1}esiste un percorso {2} ~> {3} ~> {4} ~> {5} ~> ∞", Nome, (r ? "" : "Non "), a, b, c, d);
  49.  
  50.     return r;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement