#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |