L2-010 排座位

#include <bits/stdc++.h>

using namespace std;

constexpr int N = 110;
int f[N];

int find(int x) {
    if (x != f[x]) return f[x] = find(f[x]);
    return f[x];
}

int main() {
    int n, m, k;
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) f[i] = i;
    set<pair<int, int>> enemy;
    for (int i = 0; i < m; i++) {
        int a, b, r;
        cin >> a >> b >> r;
        if (r == -1) {
            enemy.insert({a, b}), enemy.insert({b, a});
            continue;
        }
        int fa = find(a), fb = find(b);
        f[fa] = fb;
    }
    while (k--) {
        int a, b;
        cin >> a >> b;
        int fa = find(a), fb = find(b);
        if (enemy.count({a, b}) || enemy.count({b, a})) {
            if (fa == fb) {
                cout << "OK but..." << "\n";
            } else cout << "No way" << "\n";
        } else {
            if (fa == fb) cout << "No problem" << "\n";
            else cout << "OK" << "\n";
        }
    }

    return 0;
}
posted @ 2022-03-16 20:04  Xxaj5  阅读(51)  评论(0编辑  收藏  举报