code: func (g *AcyclicGraph) Root() (Vertex, error) {
  	roots := make([]Vertex, 0, 1)
  	for _, v := range g.Vertices() {
  		if g.UpEdges(v).Len() == 0 {
  			roots = append(roots, v)
  		}
  	}
  
  	if len(roots) > 1 {
  		// TODO(mitchellh): make this error message a lot better
  		return nil, fmt.Errorf("multiple roots: %#v", roots)
  	}
  
  	if len(roots) == 0 {
  		return nil, fmt.Errorf("no roots found")
  	}
  
  	return roots[0], nil
  }
docs: // Root returns the root of the DAG, or an error.
  //
  // Complexity: O(V)