31672023-02-21 12:29:06rennHírvivők csoportosítása (40)cpp17Hibás válasz 22/4014ms5464 KiB
#include <bits/stdc++.h>
using namespace std;

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

int cnt;
void bfs(int c, int &n, int &cl, int &k, vector<bool> &volt, vector<pair<int, int>> &pontok);

bool megold(int n, int cl, int &k, vector<bool> &volt, vector<pair<int, int>> &pontok)
{
    fill(volt.begin(), volt.end(), false);
    
    cnt = 0;

    for (int i = 0; i < n; i++)
    {
        if(volt[i]) continue;
        cnt++;
        bfs(i, n, cl, k, volt, pontok);
    }

    return cnt <= k;
}

void bfs(int c, int &n, int &cl, int &k, vector<bool> &volt, vector<pair<int, int>> &pontok)
{
    volt[c] = true;
    for(int i = 0; i < n; i++)
    {
        if(volt[i]) continue;
        if(abs(pontok.at(c).first-pontok.at(i).first)+abs(pontok.at(c).second-pontok.at(i).second) <= cl)
        {
            bfs(i, n, cl, k, volt, pontok);
            continue;
        }
    }
}

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 = 1, right = 1000001, mid;
    //cout << "----\n";
    while(left <= right)
    {
        
        mid = left+(right-left)/2;
        //cout << left << " " << mid << " " << right << "\n";

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

    cout << (mid+1) << "\n";

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base22/40
1Elfogadva0/03ms1828 KiB
2Elfogadva0/014ms3520 KiB
3Hibás válasz0/13ms2148 KiB
4Elfogadva1/13ms2240 KiB
5Elfogadva1/14ms2876 KiB
6Elfogadva1/14ms3184 KiB
7Elfogadva1/13ms2784 KiB
8Elfogadva1/13ms3044 KiB
9Elfogadva1/13ms3128 KiB
10Elfogadva1/14ms3588 KiB
11Hibás válasz0/14ms3636 KiB
12Hibás válasz0/14ms3576 KiB
13Hibás válasz0/314ms5132 KiB
14Hibás válasz0/314ms5252 KiB
15Elfogadva3/314ms5332 KiB
16Hibás válasz0/314ms5340 KiB
17Elfogadva3/314ms5464 KiB
18Hibás válasz0/314ms5336 KiB
19Hibás válasz0/314ms5340 KiB
20Elfogadva3/314ms5424 KiB
21Elfogadva3/314ms5428 KiB
22Elfogadva3/314ms5336 KiB