Submission #1295170

#TimeUsernameProblemLanguageResultExecution timeMemory
1295170al95ireyizKOVANICE (COI15_kovanice)C++20
50 / 100
46 ms21956 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define vll vector<ll>
#define len(x) (ll)x.size()
const ll INF = 1e9, INFL = 1e18;
const ll MOD = 1e9 + 7;
const ll maxn = 2e5 + 5;
 
ll n, m, k = 0;

ll dsu[maxn];
ll find(ll x){
    if(dsu[x] == x) return x;
    return dsu[x] = find(dsu[x]);
}
void merge(ll x, ll y){
    ll p_x = find(x), p_y = find(y);
    if(p_x == p_y) return;
    dsu[p_y] = p_x;
}
struct D{
    ll dis[maxn], vis[maxn];
    vll g[maxn];
} a, b;
void dfs(ll u){
    if(!a.vis[u]){
        a.vis[u] = 1;
        for(auto v : a.g[u]){
            if(!a.vis[v]) dfs(v);
            a.dis[u] = max(a.dis[u], a.dis[v] + 1);
        }
    }
    if(!b.vis[u]){
        b.vis[u] = 1;
        for(auto v : b.g[u]){
            if(!b.vis[v]) dfs(v);
            b.dis[u] = max(b.dis[u], b.dis[v] + 1);
        }
    }
}
void _() {
    cin >> n >> m >> k;
    for(ll i = 1; i <= m; i ++) dsu[i] = i;

    vector<pair<ll, ll>>v;
    char c;
    for(ll i = 1, x, y; i <= k; i ++){
        cin >> x >> c >> y;
        if(c == '=') merge(x, y);
        else{
            v.push_back({x, y});
        }
    }
    for(auto [x, y] : v){
        ll p_x = find(x), p_y = find(y);
        a.g[p_x].push_back(p_y);
        b.g[p_y].push_back(p_x);
    }
    
    for(ll i = 1; i <= m; i ++){
        if(find(i) != i) continue;

        dfs(i);
    }

    for(ll i = 1; i <= m; i ++){
        ll p_i = find(i);
        if(a.dis[p_i] + b.dis[p_i] + 1 == n) cout << 'K' << b.dis[p_i] + 1 << '\n';
        else cout << "?\n";
    }
}
signed main() {
    cin.tie(0)->sync_with_stdio(0);
    ll t = 1;
    // cin >> t;
    while(t --) _();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...