private void setupLRNeighbors() {
    List<Team> teams = pp.getTeams();
    for (Team t : teams) {
      // System.out.println(t);
      Vertex u = Vertex.vertexFromEmployee(t.getEmployee(0));
      Vertex v = Vertex.vertexFromEmployee(t.getEmployee(1));

      u.addToNeighbors(v);
      v.addToNeighbors(u);

      setCapacity(u, v, 1);
      setFlow(u, v, 0);
    }
  }
  private void initialize() {
    Set<Employee> Lset = pp.getEmployees(0);
    Set<Employee> Rset = pp.getEmployees(1);

    // FIXME!!!
    // flow = new HashMap<Vertex, Map<Vertex, Integer>>(2 * (Lset.size() + Rset.size()));
    // capacity = new HashMap<Vertex, Map<Vertex, Integer>>(2 * (Lset.size() + Rset.size()));
    flow = new TreeMap<Vertex, Map<Vertex, Integer>>();
    capacity = new TreeMap<Vertex, Map<Vertex, Integer>>();

    setupSourceSide(Lset);
    setupSinkSide(Rset);

    setupLRNeighbors();
    biasForFriend();

    source.setHeight(V.size() + 2);
  }
  public static void main(String[] args) {
    try {
      // Parse input and set up
      ProjectParams pp = ProjectParams.fromStdIn();
      // System.out.println(pp.getTeams());
      // System.out.println(pp);

      Solver solver = new Solver(pp);
      // System.out.println(solver + "\n");

      // Solve and print
      solver.solve();
      solver.printSolution();
    } catch (IOException e) {
      System.err.println("Error reading data from stdin\n");
      e.printStackTrace();
    }
  }