3165 2023. 02. 21 12:01:43 renn Hírvivők csoportosítása (40) cpp17 Időlimit túllépés 4/40 476ms 8352 KiB
#include <bits/stdc++.h>
using namespace std;

#define GOTTAGOFAST cin.tie(0); ios::sync_with_stdio(0);

int cnt;

inline bool megold(vector<vector<int>> &graf, int cl, int &k, vector<bool> &volt)
{
    fill(volt.begin(), volt.end(), false);
    
    cnt = 0;
    queue<int> next;

    for(int i = 0; i < graf.size(); ++i)
    {
        if(volt[i]) continue;

        cnt++;

        next.push(i);
        while(!next.empty())
        {
            volt.at(next.front()) = true;
            for(int j = 0; j < graf.size(); ++j)
            {
                if(volt[j] || graf.at(next.front()).at(j) == -1) continue;

                if(graf.at(next.front()).at(j) < cl)
                {
                    next.push(j);
                }
            }
            next.pop();
        }
    }

    return cnt <= k;
}

int main()
{

    GOTTAGOFAST

    int x, y, n, k;
    cin >> x >> y >> n >> k;

    vector<vector<int>> graf(n, vector<int>(n, -1));
    vector<pair<int, int>> pontok(n);
    vector<bool> volt(n);
    int a, b;
    for (size_t i = 0; i < n; i++)
    {
        cin >> a >> b;
        pontok.at(i) = {a, b};
    }

    int left = INT_MAX, right = -1, mid;

    for (size_t i = 0; i < n; i++)
    {
        for (size_t j = 0; j < n; j++)
        {
            if(i == j || graf.at(i).at(j) != -1) continue;
            graf.at(i).at(j) = abs(pontok.at(i).first-pontok.at(j).first)+abs(pontok.at(i).second-pontok.at(j).second);
            left = min(graf.at(i).at(j), left);
            right = max(graf.at(i).at(j), right);
        }
        
    }
    
    while(left < right)
    {
        mid = left+(right-left)/2;

        if(megold(graf, mid, k, volt))
        {
            right = mid-1;
        }
        else
        {
            left = mid+1;
        }
    }

    cout << right << "\n";

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 4/40
1 Elfogadva 0/0 3ms 1832 KiB
2 Időlimit túllépés 0/0 467ms 4180 KiB
3 Hibás válasz 0/1 12ms 2476 KiB
4 Elfogadva 1/1 3ms 2336 KiB
5 Elfogadva 1/1 282ms 3116 KiB
6 Időlimit túllépés 0/1 458ms 6316 KiB
7 Időlimit túllépés 0/1 451ms 3960 KiB
8 Elfogadva 1/1 29ms 3212 KiB
9 Hibás válasz 0/1 17ms 3232 KiB
10 Elfogadva 1/1 111ms 3968 KiB
11 Hibás válasz 0/1 238ms 4104 KiB
12 Időlimit túllépés 0/1 470ms 8352 KiB
13 Időlimit túllépés 0/3 463ms 4636 KiB
14 Időlimit túllépés 0/3 476ms 4300 KiB
15 Időlimit túllépés 0/3 467ms 5320 KiB
16 Időlimit túllépés 0/3 451ms 5284 KiB
17 Időlimit túllépés 0/3 451ms 5480 KiB
18 Időlimit túllépés 0/3 439ms 6580 KiB
19 Időlimit túllépés 0/3 463ms 5044 KiB
20 Időlimit túllépés 0/3 467ms 5344 KiB
21 Időlimit túllépés 0/3 456ms 4872 KiB
22 Időlimit túllépés 0/3 453ms 4912 KiB