public MinimumAccess ( int[][] RouteArray, int N, int Start, int Goal, ConnectPoint CP ) { //ŒZ߂
		
		new Rangefinder (CP, RouteArray); //ŒZoHT邽߂̍s쐬
		
		boolean Visited[] = new boolean[N]; //ŒZm肵n_
		int Dist[] = new int[N]; //ŏ炻܂ł̋
		int prev[] = new int[N]; //܂ɂn_
		int nodes[] = new int[N]; //Xԍ
		for ( int i = 0; i < N; i++ ) {
			Visited[i] = false; //SĂ̊XĂȂԂɂ
			Dist[i] = Integer.MAX_VALUE; //SĂ̊X܂ł̋𖳌ɂ(2147483647
			nodes[i] = i; //Xԍ			
		}
		Dist[Start] = 0; //ŏ̒n_Ȃ̂œR0ɂȂ
		prev[Start] = Start; // ŏɑȊO͖̒̂ŁAƂ肠̒Ă
		int pos = Start; //ݒnݒ
		MinimumRouteSearch ( Visited, RouteArray, Dist, prev, pos, N, nodes ); //ŏoHT
		
		//CJRXgN^I܂ŕ\̃R}hAԂႯꕔ̂Ă@܂oH̕\@̂DistɊi[Ă̂ŖȂ
		@SuppressWarnings("unused")
		String str = Start + "" + Goal + "܂ł̍ŒZ[g";
		int node = prev[Goal];
		String track = Integer.toString ( Goal );
		for ( int i = 0; i < N; i++ ) {
			track += node;
			if ( node == Start ) break;
			node = prev[node];
		}
		for ( int i = track.length () - 1; i >= 0; i--) str += " => " + track.charAt ( i );
		//if ( node == Start ) System.out.println ( str );
		//else System.out.println ( "[gȂ" );
		//System.out.println ( ""+ Dist[Goal] );
		Length = Dist[Goal]; //QƗp
	}