제출 #1318436

#제출 시각아이디문제언어결과실행 시간메모리
1318436nnargizKOVANICE (COI15_kovanice)C++20
0 / 100
643 ms89092 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define int long long
using namespace __gnu_pbds;
using namespace std;
const int mod = 1e6 + 3;
const int inf = 1e9;
const int maxx = 3e6 + 5;
const int lg = 26;
typedef tree <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update> ordered_multiset;

int tmr = 0;
set <pair <int, int> > s;
vector <int> g[maxx], dis(maxx), col(maxx, -1);

void dfs (int u) {
    col[u] = tmr;
        for (auto to : g[u]) {
        if (col[to] == -1 && s.count({to, u})) {
            dfs(to);
        }
    }
}

void solve () {
    int n, m, v;
    cin >> n >> m >> v;
    while (v--) {
        int a, b;
        char c;
        cin >> a >> c >> b;
        if (c == '=') {
            g[a].push_back(b);
            g[b].push_back(a);
            s.insert({a, b});
            s.insert({b, a});
        }
        else {
            g[a].push_back(b);
            s.insert({a, b});
        }
    }
    for (int i = 1; i <= m; i++) {
        if (col[i] == -1) {
            tmr++;
            dfs(i);
        }
    }
    for (int i = 1; i <= m; i++) {
        if (col[i] == -1) {
            cout << '?' << endl;
        }
        else {
            cout << 'K' << col[i] << endl;
        }
    }
}

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...