public Path findCircuit(int citiesRemaining, Vertex home, Graphics g)
	{
		
		this.visited = true;
		Path bestPath = new Path();
		bestPath.cost = 1000000000;
		
		if(citiesRemaining == 0)
		{
			//Checks this node's edges to 
			//find the edge that goes back home
		    for(Edge e : this.edges)
		    {
		    	if(e.toVertex.equals(home))
		    	{
		    		bestPath = new Path();
		    		bestPath.add(e);
		    	}
		    }
		}
		else
		{
			for(Edge edge : this.edges)
			{
				//Paint edge
				edge.drawMe(g, Color.black);
				
				//slight pause
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				Vertex toVertex = edge.toVertex;
				if(!toVertex.visited)
				{
					//recursive call
					Path newPath = toVertex.findCircuit(citiesRemaining-1, home, g);
					newPath.add(edge);
					
					//Prints out contents of each new path
					System.out.println(newPath.toString());
					
					//replaces bestPath 
					if(newPath.cost < bestPath.cost)
					{
						bestPath = newPath;
					}
				}
				
				//Unpaint edge
				edge.drawMe(g, Color.green);
				
				//slight pause
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		System.out.println("BestPath: " + bestPath.toString());
		this.visited = false;
		return bestPath;
	}