public void visit(UndirectedGraphNode newNode, UndirectedGraphNode orig, 
			Map<Integer, UndirectedGraphNode> map, Map<Integer, Boolean> visited) {
		if(!visited.containsKey(orig.label) || visited.get(orig.label)) return;
		visited.put(orig.label, true);
		
		for(UndirectedGraphNode node : orig.neighbors) {
			UndirectedGraphNode neigh;
			if(!map.containsKey(node.label)) {
				neigh = new UndirectedGraphNode(node.label);
				map.put(node.label, neigh);
				visited.put(node.label, false);
				
				visit(neigh, node, map, visited);
			} else neigh = map.get(node.label);
			newNode.neighbors.add(neigh);
		}
	}