public static int selectCity(int[]P, boolean[][]E) {
    	int n=P.length;
    	int[][]T=new int[n][n];
    	fillTableProxy(P, E, T);
    	int rel=-1, cost=Integer.MAX_VALUE;
    	for (int i=0;i<n;++i) {
    		int imax=0;
    		for (int j=0;j<n;++j) {
    			if (E[i][j]) {
    				imax=Math.max(imax, T[i][j]);
    			}
    		}
    		if(cost >imax) {
    			cost=imax;
    			rel=i;
    		}
    	}
    	return rel+1;
    }