//Script.NET examples
//(c)2007-2009, Protsyk Petro, http://www.protsyk.com

//1
//  2
//   3
//  4
//  5

u = [ 1, 2 , 3 , 4 , 5];
v = [ [1,2], [2,3], [1,4], [1,5] ];

g = [ 
      vertexes -> u,
      edges    -> v
    ];

function IsTree(g)
{
 vert = new ArrayList ();
 
 foreach (edge in g.edges)
 {
   if (!vert.Contains(edge[1]))
        vert.Add(edge[1]);
   else
        return false;
 } 

 if  ( vert.Count == g.vertexes.Length-1 )
 {
   foreach (root in g.vertexes)
    if ( ! vert.Contains(root))
    {
       g.root =  root;
       break;
     }

   return true;
 }
 else
    return false;
}

IsTree(g);

root = g.root;

s = '';
foreach (x in v)
 s = s + x[0]+'->' + x[1] + ', ';
