3336 2023. 02. 26 12:10:57 zsombor MobilNet (50 pont) cpp17 Elfogadva 50/50 104ms 18224 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
using namespace std;

int n, t = 0, k, prevk;
vector <int> X(1e5);
vector <int> Y(1e5);
map <int, vector <pair <int, int>>> mX;
map <int, vector <pair <int, int>>> mY;
priority_queue <pair <int, pair <int, int>>> pq;

vector <int> p(1e5);
vector <int> sz(1e5, 1);

int HOLVAN(int a) {
    if (a == p[a]) return a;
    return p[a] = HOLVAN(p[a]);
}

void UNIO(int a, int b) {
    if (sz[a] < sz[b]) swap(a, b);
    p[b] = a;
    sz[a] += sz[b];
    k--;
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> X[i] >> Y[i];
        mX[X[i]].push_back({ Y[i],i });
        mY[Y[i]].push_back({ X[i],i });
    }
    int a, b, w;
    for (auto p : mX) {
        vector<pair<int, int>>& v = p.second;
        sort(v.begin(), v.end());
        for (int j = 1; j < v.size(); j++) {
            a = v[j - 1].second;
            b = v[j].second;
            w = v[j].first - v[j - 1].first;
            pq.push({ -w,{a,b} });
        }
    }
    for (auto p : mY) {
        vector<pair<int, int>>& v = p.second;
        sort(v.begin(), v.end());
        for (int j = 1; j < v.size(); j++) {
            a = v[j - 1].second;
            b = v[j].second;
            w = v[j].first - v[j - 1].first;
            pq.push({ -w,{a,b} });
        }
    }
    k = n;
    for (int i = 0; i < n; i++) p[i] = i;
    while (pq.size()) {
        a = pq.top().second.first;
        b = pq.top().second.second;
        w = -pq.top().first;
        pq.pop();
        a = HOLVAN(a);
        b = HOLVAN(b);
        if (a == b) continue;
        if (w > t) { t = w; prevk = k; }
        UNIO(a, b);
        if (k == 1) break;
    }
    cout << t << endl << prevk - 1;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 4ms 4784 KiB
2 Elfogadva 0/0 12ms 6088 KiB
3 Elfogadva 2/2 4ms 5076 KiB
4 Elfogadva 2/2 4ms 5048 KiB
5 Elfogadva 2/2 4ms 5304 KiB
6 Elfogadva 2/2 4ms 5256 KiB
7 Elfogadva 2/2 4ms 5388 KiB
8 Elfogadva 2/2 6ms 5968 KiB
9 Elfogadva 2/2 6ms 6156 KiB
10 Elfogadva 2/2 8ms 6808 KiB
11 Elfogadva 2/2 10ms 7028 KiB
12 Elfogadva 2/2 16ms 8072 KiB
13 Elfogadva 3/3 23ms 8852 KiB
14 Elfogadva 3/3 32ms 9280 KiB
15 Elfogadva 3/3 43ms 11788 KiB
16 Elfogadva 3/3 50ms 11988 KiB
17 Elfogadva 3/3 71ms 14456 KiB
18 Elfogadva 3/3 65ms 11812 KiB
19 Elfogadva 3/3 79ms 14364 KiB
20 Elfogadva 3/3 97ms 12928 KiB
21 Elfogadva 3/3 104ms 18224 KiB
22 Elfogadva 3/3 101ms 18192 KiB