255232026-02-20 13:50:40MatematikaSportos nyaraláscpp17Elfogadva 40/40153ms2868 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> p1,p2;
map<pair<int,int>,int> ki;

int root(int x, vector<int>& p)
{
    if(x==p[x])
        return x;
    return p[x]=root(p[x],p);
}

void unio(int x, int y,vector<int>& p)
{
    x=root(x,p);
    y=root(y,p);
    if(x==y)
        return;
    if(x<y)
        swap(x,y);
    p[y]=x;
}

int main() {
	int n,m,k; cin >> n >> m >> k;
    int a,b;
    p1.resize(n);
    p2.resize(n);
    for(int i=0; i<n; i++)
    {
        p1[i]=i;
        p2[i]=i;
    }
    for(int i=0; i<m; i++)
    {
        cin >> a >> b; a--;b--;
        unio(a,b,p1);
    }
    for(int i=0; i<k; i++)
    {
        cin >> a >> b; a--;b--;
        unio(a,b,p2);
    }
    for(int i=0; i<n; i++)
    {
        ki[{root(i,p1),root(i,p2)}]++;
    }
    for(int i=0; i<n; i++)
    {
        cout << ki[{root(i,p1),root(i,p2)}]-1 << " ";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms508 KiB
2Elfogadva0/0112ms2336 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Elfogadva1/11ms316 KiB
8Elfogadva1/11ms508 KiB
9Elfogadva1/11ms352 KiB
10Elfogadva1/13ms316 KiB
11Elfogadva2/23ms436 KiB
12Elfogadva2/23ms404 KiB
13Elfogadva2/214ms400 KiB
14Elfogadva2/210ms404 KiB
15Elfogadva2/246ms1844 KiB
16Elfogadva2/261ms2352 KiB
17Elfogadva3/376ms2868 KiB
18Elfogadva3/379ms2868 KiB
19Elfogadva2/265ms820 KiB
20Elfogadva2/286ms744 KiB
21Elfogadva2/2103ms1588 KiB
22Elfogadva2/293ms2336 KiB
23Elfogadva3/3123ms1316 KiB
24Elfogadva3/3153ms1316 KiB