Submission
Status:
[-SSSSSSSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: fillhavertz
Problemset: รถยนต์ รถไฟ เรือเมล์ ลิเก ตำรวจ
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-14 11:29:38
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, M;
cin >> N >> M;
vector<vector<int>> trainGraph(N + 1);
for (int i = 0; i < M; i++) {
int u, v;
cin >> u >> v;
trainGraph[u].push_back(v);
trainGraph[v].push_back(u);
}
// BFS: (car, train)
vector<vector<int>> dist(N + 1, vector<int>(N + 1, -1));
queue<pair<int,int>> q;
q.push({1,1});
dist[1][1] = 0;
while (!q.empty()) {
auto [car, train] = q.front();
q.pop();
// ??Ҷ֧???ͧ N ??駤??????
if (car == N && train == N) {
cout << dist[car][train] * 10 << "\n";
return 0;
}
// ö¹?????????ͧ???
for (int nextCar = 1; nextCar <= N; nextCar++) {
if (nextCar == car) continue;
// ö?????ö????ͧ?????????Ѻ train
for (int nextTrain : trainGraph[train]) {
// ??????ҵç?ѹ (?Թ??????ѹ)
if (abs(nextCar - car) == 1) { // ????ö??????? 10 ??????
if (dist[nextCar][nextTrain] == -1) {
dist[nextCar][nextTrain] = dist[car][train] + 1;
q.push({nextCar, nextTrain});
}
}
}
}
}
cout << -1 << "\n";
return 0;
}