Submission #863475

#TimeUsernameProblemLanguageResultExecution timeMemory
863475Cyber_WolfInside information (BOI21_servers)C++17
0 / 100
3586 ms524288 KiB
#include <bits/stdc++.h>

using namespace std;

#define lg long long

const lg N = 2e5+5;

lg par[N], compSize[N];

lg get(lg src)
{
    if(src == par[src]) return src;
    return par[src] = get(par[src]);
}

void join(lg u, lg v)
{
    u = get(u), v = get(v);
    if(u == v)  return;
    if(compSize[u] > compSize[v])   swap(u, v);
    par[u] = v;
    compSize[v] += compSize[u];
    return;
}

int main()
{
    #ifdef CYBER
        freopen("in.txt", "r", stdin);
        freopen("out.txt", "w", stdout);
    #endif
    lg n, k;
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
    {
        par[i] = i;
        compSize[i] = 1; 
    }
    set<lg> se[n], dat[n];
    for(int i = 0; i < n; i++)  se[i].insert(i), dat[i].insert(i);
    k += n-1;
    while(k--)
    {
        char c;
        cin >> c;
        if(c == 'S')
        {
            lg u, v;
            cin >> u >> v;
            u--, v--;
            for(auto it : se[v])
            {
                se[u].insert(it);
                dat[it].insert(u);
            }
            for(auto it : se[u])
            {
                se[v].insert(it);
                dat[it].insert(v);
            }
        }
        else if(c == 'Q')
        {
            lg u, v;
            cin >> u >> v;
            u--, v--;
            cout << ((se[u].find(v) != se[u].end()) ? "yes\n" : "no\n");
        }
        else{
            lg u;
            cin >> u;
            u--;
            cout << dat[u].size() << '\n';
        }
    }
}
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...