제출 #1355829

#제출 시각아이디문제언어결과실행 시간메모리
1355829tamerrKOVANICE (COI15_kovanice)C++20
50 / 100
42 ms7516 KiB

#include "bits/stdc++.h"
using namespace std;
using ll=long long;
using ull=unsigned long long;
#define speed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define endl "\n"
#define int ll
#define ff first
#define ss second
#define pb push_back
#define all(v) v.begin(),v.end()
const int sz = 5e5 + 9;	
const int oo = 1e18 + 7;
const int N = 2e5 + 5;
const int mod = 1e9 + 7;
int phi(int n){
    int res=n;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            while(n%i==0)
            n/=i;
            res-=res/i;
        }
    }   
    if(n>1)
    res-=res/n;
    return res;
}
int binpow(int x, int y,int MOD){
    if(!y) return 1;
    int res = binpow(x, y / 2,MOD);
    if(y % 2 == 1) 
    return (((res%MOD)*(res%MOD))%MOD)*(x%MOD)%MOD;
    return ((res%MOD)*(res%MOD))%MOD;
}
int inv(int n){
    return binpow(n,mod-2,mod);
}
int gcd(int a, int b) {
    if (b == 0)
    return a;
    return gcd(b, a % b); 
}
// vector<int>prime;
// vector<bool>primes(sz, true);
// void sieve()
// {
//     primes[0] = primes[1] = false;
//     for(int i = 2; i * i < sz; i++){
//         if(primes[i] == false)
//             continue;
//         for(int j = i * i; j < sz; j += i)
//         primes[j] = false;
//     }
//     for(int i = 0; i < sz; i++){
//         if(primes[i] == true)
//             prime.push_back(i);
//     }
// }
vector<int>e;
int get(int x)
{
    if(e[x]<0)
    return x;
    return e[x]=get(e[x]);
}
bool sameset(int x,int y)
{
    x=get(x);
    y=get(y);
    return (x==y);
}
bool uni(int x,int y)
{
    x=get(x);
    y=get(y);
    if(x==y)
    return false;
    if(e[x]>e[y])
    swap(x,y);
    // e[x]+=e[y];
    e[y]=x;
    return true;
}
void solve(){
    int n,m,q;
    cin>>n>>m>>q;
    e.resize(m+1,-1);
    vector<int>ans(m+1,-1);
    vector<pair<int,int>>que;
    while(q--)
    {
        int a,b;
        char c;
        cin>>a>>c>>b;
        if(c=='=')
        que.pb({a,b});
        else
        {
            e[b]=-22;
            e[a]=-11;
        }
    }
    for(auto [a,b] : que)
    uni(a,b);
    for(int i=1;i<=m;i++)
    {
        if(e[get(i)]==-1)
        cout<<'?'<<endl;
        else
        {
            if(e[get(i)]==-11)
            cout<<'K'<<1<<endl;
            else
            cout<<'K'<<2<<endl;
        }
    }

}
signed main()
{
    speed;
    int tt=1; 
    // cin >> tt;
    while(tt--)
    {    
       solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...