제출 #475738

#제출 시각아이디문제언어결과실행 시간메모리
475738soba사육제 (CEOI14_carnival)C++14
20 / 100
115 ms272 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
int par[151], siz[151];
int fnd(int node)
{
    if(par[node]!=node)
    {
        return par[node]=fnd(par[node]);
    }
    return par[node]=node;
}
void uni(int a, int b)
{
    a=fnd(a);
    b=fnd(b);
    if(a==b)
        return;
    if(siz[a]>siz[b])
    {
        par[b]=a;
        siz[a]++;
    }
    else
    {
        par[a]=b;
        siz[b]++;
    }
    return ;
}
int main()
{
    int n;
    cin >> n;
    int start=1 , nxt , q;
    for(int i =1 ; i<= n ;i++)
    {
        siz[i]=1;
        par[i]=i;
    }
    while(start!=-1)
    {
        nxt=-1;
        for(int i= start+1 ; i<= n ;i++)
        {
            cout << 2 << " " << start << " " << i << "\n";
            cout.flush();
            cin >> q;
            if(q==1)
            {
                uni(start, i);
            }
            else
            {
                if(nxt==-1)
                    nxt=i;
            }
        }
        start=nxt;
    }
    int cnt=1;
    map<int,int>mp;
    for(int i =1 ; i<=n ; i++)
    {
        q=fnd(i);
        if(mp[q]==0)mp[q]=cnt++;
    }
    cout << 0 << " ";
    for(int i =1 ; i<=n ; i++)
    {
        q=fnd(i);
        cout <<mp[q] << " ";
    }
    cout <<"\n";
    cout.flush();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...