2つの駅を指定して、直通のルートがなければ、どのように乗り換え回数が最も少ないルートを見つけますか?


#define N 10

void search(bool edge[N][N], int n, int cur, int end, vector &route,
		vector &result) {
	if (cur == end) {
		if (result.empty() || route.size() < result.size()) {
			result = route;
		}
		return;
	} else {
		for (int i = 0; i < n; ++i) {
			if (edge[cur][i]
					&& (find(route.begin(), route.end(), i) == route.end())) {
				route.push_back(i);
				search(edge, n, i, end, route, result);
				route.pop_back();
			}
		}
	}
}

vector findFastRoute() {
	int n = 5;	//     

	bool edge[N][N];	//      
	init(edge);

	vector tmp;
	vector result;

	int start = 0;
	int end = n - 2;
	tmp.push_back(start);
	search(edge, n, start, end, tmp, result);
	return result;
}