32632023-02-23 14:58:26sztomiHírvivők csoportosítása (40)cpp11Accepted 40/4025ms8304 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

int tav(pii a, pii b){
    return abs(a.first - b.first) + abs(a.second - b.second);
}

int h;
vector<vector<pii>> graf;
vector<int> volt;
int ido = 0;

void dfs(int akt, int& l){
    volt[akt] = ido;
    for(auto kov : graf[akt]){
        if(kov.first > l) break;
        if(volt[kov.second] >= ido) continue;
        dfs(kov.second, l);
    }
}


int csoport_db(int l){
    int ki = 0;
    ido++;
    for(int i = 0; i < h; i++){
        if(volt[i] < ido){
            ki++;
            dfs(i, l);
        }
    }
    return ki;
}


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int n, m, k;
    cin >> n >> m >> h >> k;
    // tav, kovi
    graf.assign(h, vector<pii>());
    volt.assign(h, 0);
    vector<pii> hely(h);
    for(int i = 0; i < h; i++){
        cin >> hely[i].first >> hely[i].second;
    }
    int t;
    for(int i = 0; i < h; i++){
        for(int j = i+1; j < h; j++){
            t = tav(hely[i], hely[j]);
            graf[i].push_back({t, j});
            graf[j].push_back({t, i});
        }
    }
    for(int i = 0; i < h; i++){
        sort(graf[i].begin(), graf[i].end());
    }

    int ki = -1;
    int l = 0, r = 20200;
    int mid;
    while(l <= r){
        mid = (l+r) / 2;
        if(csoport_db(mid) <= k){
            r = mid - 1;
            ki = mid;
        }
        else{
            l = mid + 1;
        }
    }

    cout << ki << "\n";
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/03ms1828 KiB
2Accepted0/019ms5604 KiB
3Accepted1/14ms2484 KiB
4Accepted1/13ms2612 KiB
5Accepted1/16ms3272 KiB
6Accepted1/16ms3524 KiB
7Accepted1/14ms3084 KiB
8Accepted1/14ms3300 KiB
9Accepted1/13ms3380 KiB
10Accepted1/16ms3876 KiB
11Accepted1/16ms4128 KiB
12Accepted1/16ms4092 KiB
13Accepted3/324ms7404 KiB
14Accepted3/325ms7344 KiB
15Accepted3/325ms7488 KiB
16Accepted3/325ms7600 KiB
17Accepted3/324ms7812 KiB
18Accepted3/324ms8024 KiB
19Accepted3/324ms8112 KiB
20Accepted3/324ms8304 KiB
21Accepted3/324ms8256 KiB
22Accepted3/325ms8304 KiB