11072022-03-03 18:44:36peti1234Sportos nyaraláscpp14Futási hiba 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/40
1Futási hiba0/04ms2180 KiB
2Futási hiba0/04ms2260 KiB
3Futási hiba0/14ms2276 KiB
4Futási hiba0/14ms2288 KiB
5Futási hiba0/14ms2292 KiB
6Futási hiba0/13ms2300 KiB
7Futási hiba0/14ms2304 KiB
8Futási hiba0/13ms2308 KiB
9Futási hiba0/14ms2308 KiB
10Futási hiba0/13ms2320 KiB
11Futási hiba0/24ms2344 KiB
12Futási hiba0/24ms2364 KiB
13Futási hiba0/24ms2376 KiB
14Futási hiba0/24ms2400 KiB
15Futási hiba0/23ms2408 KiB
16Futási hiba0/23ms2432 KiB
17Futási hiba0/34ms2448 KiB
18Futási hiba0/34ms2440 KiB
19Futási hiba0/23ms2472 KiB
20Futási hiba0/23ms2492 KiB
21Futási hiba0/23ms2508 KiB
22Futási hiba0/24ms2520 KiB
23Futási hiba0/34ms2536 KiB
24Futási hiba0/34ms2552 KiB