11072022-03-03 18:44:36peti1234Sportos nyaraláscpp14Runtime error 0/404ms2552 KiB
#include <bits/stdc++.h>

using namespace std;
int n, s[2], ki[50005][2];
map<pair<int, int>, int> m;

// ket unio-holvan, id azt mutatja, hogy melyik komponens
int holvan(int a, int id) {
    return (ki[a][id] ? ki[a][id]=holvan(ki[a][id], id) : a);
}
int unio(int a, int b, int id) {
    a=holvan(a, id), b=holvan(b, id);
    if (a!=b) {
        ki[a][id]=b;
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin >> n >> s[0] >> s[1];
    // kicsit trukkos beolvasas, igy egy for ciklussal lehet ketszer ugyanazt csinalni
    for (int i=0; i<2; i++) {
        for (int j=1; j<=s[i]; j++) {
            int a, b;
            cin >> a >> b;
            unio(a, b, i);
        }
    }

    // egy (a, b) par pontosan akkor jo, ha mindet szinnel egy komponensben vannak, vagyis holvan(a, 0)=holvan(b, 0) es holvan(a, 1)=holvan(b, 1)
    for (int i=1; i<=n; i++) {
        m[{holvan(i, 0), holvan(i, 1)}]++;
    }
    for (int i=1; i<=n; i++) {
        cout << m[{holvan(i, 0), holvan(i, 1)}]-1 << " ";
    }
    // ez igy lehet a legegyszerubben megcsinlani
    cout << "\n";
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base0/40
1Runtime error0/04ms2180 KiB
2Runtime error0/04ms2260 KiB
3Runtime error0/14ms2276 KiB
4Runtime error0/14ms2288 KiB
5Runtime error0/14ms2292 KiB
6Runtime error0/13ms2300 KiB
7Runtime error0/14ms2304 KiB
8Runtime error0/13ms2308 KiB
9Runtime error0/14ms2308 KiB
10Runtime error0/13ms2320 KiB
11Runtime error0/24ms2344 KiB
12Runtime error0/24ms2364 KiB
13Runtime error0/24ms2376 KiB
14Runtime error0/24ms2400 KiB
15Runtime error0/23ms2408 KiB
16Runtime error0/23ms2432 KiB
17Runtime error0/34ms2448 KiB
18Runtime error0/34ms2440 KiB
19Runtime error0/23ms2472 KiB
20Runtime error0/23ms2492 KiB
21Runtime error0/23ms2508 KiB
22Runtime error0/24ms2520 KiB
23Runtime error0/34ms2536 KiB
24Runtime error0/34ms2552 KiB