160882025-03-30 20:53:13szilVárosokcpp17Hibás válasz 5/10041ms4068 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MAXN = 50001;

vector<int> g[MAXN];
int vis[MAXN];
int mt[MAXN];

bool try_kuhn(int u, int iter) {
    if (vis[u] == iter) return false;
    vis[u] = iter;
    for (int v : g[u]) {
        if (mt[v] == -1 || try_kuhn(mt[v], iter)) {
            mt[v] = u;
            return true;
        }
    }
    return false;
}

void solve() {
    int n; ll a, b; cin >> n >> a >> b;
    fill(mt, mt+MAXN, -1);
    vector<pair<int, int>> v(n);
    for (auto &[x, y] : v) cin >> x >> y;
    vector<int> comp_x, comp_y;
    for (auto [x, y] : v) {
        comp_x.emplace_back(x);
        comp_y.emplace_back(y);
    }
    sort(comp_x.begin(), comp_x.end());
    sort(comp_y.begin(), comp_y.end());
    comp_x.erase(unique(comp_x.begin(), comp_x.end()), comp_x.end());
    comp_y.erase(unique(comp_y.begin(), comp_y.end()), comp_y.end());
    for (auto &[x, y] : v) {
        x = lower_bound(comp_x.begin(), comp_x.end(), x) - comp_x.begin();
        y = lower_bound(comp_y.begin(), comp_y.end(), y) - comp_y.begin();
        g[x].emplace_back(y);
    }

    int flow = 0;
    for (int i = 0; i < comp_x.size(); i++) {
        flow += try_kuhn(i, i+1);
    }

    ll cnt1 = comp_x.size() + comp_y.size();
    ll cnt2 = 2 * comp_x.size() - flow;

    ll ans = cnt1 * b + cnt2 * a;
    cout << ans << "\n";
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t = 1; 
    // cin >> t;
    while (t--) solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva2ms1784 KiB
2Hibás válasz2ms1588 KiB
subtask20/10
3Elfogadva2ms1588 KiB
4Elfogadva2ms1588 KiB
5Elfogadva2ms1588 KiB
6Hibás válasz2ms1684 KiB
subtask35/5
7Elfogadva41ms3976 KiB
8Elfogadva9ms2292 KiB
9Elfogadva39ms4016 KiB
10Elfogadva41ms4068 KiB
11Elfogadva39ms4016 KiB
subtask40/40
12Hibás válasz6ms2040 KiB
13Hibás válasz35ms3504 KiB
14Hibás válasz37ms3504 KiB
15Elfogadva37ms3504 KiB
16Elfogadva6ms1844 KiB
17Hibás válasz35ms3504 KiB
18Hibás válasz32ms3248 KiB
19Hibás válasz14ms2336 KiB
20Hibás válasz26ms2992 KiB
21Elfogadva8ms2356 KiB
subtask50/45
22Hibás válasz39ms3976 KiB
23Hibás válasz39ms4016 KiB
24Hibás válasz34ms3552 KiB
25Hibás válasz34ms3504 KiB
26Hibás válasz39ms3908 KiB
27Hibás válasz41ms4016 KiB