B - 嘘つきの高橋くん | AtCoder Beginner Contest 021

less than 1 minute read

B - 嘘つきの高橋くん | AtCoder Beginner Contest 021

解法

最短路の可能性があるかの判定問題.町同士の位置関係や距離(重み付け)等もないので,単に1度訪れた町をもう一度経由する(グラフとして見た時に閉路)場合は最短路ではないことはわかる.

コーナーケース検討

出発地点とゴール地点がP1PKではないことに注意.

実装

aとbは訪れているということにしておき,PiPi以前に訪れていた場合には最短路ではないと判定.O(K)

int visited[101] = {};
int a, b; cin >> a >> b;
visited[a]++; visited[b]++;
int K; cin >> K;
string ans = "YES";
REP(i, K) {
    int tmp; cin >> tmp;
    if (visited[tmp] == 1) {
        ans = "NO";
        break;
    }
    visited[tmp]++;
}
cout << ans << endl;

Submission

データ構造・アルゴリズム

  • 最短路