public void printTable() {
        Setup.println("                     DISTANCE TABLE");
        Setup.println("----------------------------------------------------------");
        for (String n : dv.keySet()) {
            Setup.print("\t" + n);
        }
        Setup.println();

        // print mine
        Setup.print(id);
        for (String n : dv.keySet()) {
            Setup.print("\t" + dv.get(n));
        }
        Setup.println();

        // print neighbors'
        for (NbrCostPair ncp : nbrList) {
            HashMap<String, Integer> ndv = ncp.getNbr().getDv();
            Setup.print(ncp.getNbr().getId());
            for (String n : dv.keySet()) {
                Integer distance = ndv.get(n);
                Setup.print("\t" + ((distance == null) ? "INF" : distance));
            }
            Setup.println();
        }
        Setup.println();
    }