Advertisement
ivnikkk

Untitled

Jun 21st, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #define debug(l) cerr<<#l<<' '<<l<<'\n';
  4. #include "bits/stdc++.h"
  5. using namespace std;
  6. #define all(a) a.begin(), a.end()
  7. typedef long long ll;
  8. typedef pair<ll, ll> pll;
  9. typedef pair<int, int> pii;
  10. typedef long double ld;
  11. vector<vector<int>> g;
  12. vector<bool> used;
  13. vector<int> mpair(1001, -1);
  14. bool kuhn(int v) {
  15.     if (used[v]) return false;
  16.     used[v] = true;
  17.     for (auto u : g[v]) {
  18.         if (mpair[u] == -1 || kuhn(mpair[u])) {
  19.             mpair[u] = v;
  20.             return true;
  21.         }
  22.     }
  23.     return false;
  24. }
  25. signed main() {
  26. #ifdef _DEBUG
  27.     freopen("input.txt", "r", stdin);
  28.     freopen("output.txt", "w", stdout);
  29. #endif
  30.     ios_base::sync_with_stdio(false);
  31.     cin.tie(nullptr);
  32.     cout.tie(nullptr);
  33.     freopen("paths.in", "r", stdin);
  34.     freopen("paths.out", "w", stdout);
  35.     int n, m;
  36.     cin >> n >> m;
  37.     g.resize(n + 1);
  38.     for (int i = 0; i < m; i++) {
  39.         int u, v;
  40.         cin >> v >> u;
  41.         g[v].push_back(u);
  42.     }
  43.     used.resize(n + 1, false);
  44.     for (int i = 1; i <= n; i++) {
  45.         used.assign(n + 1, false);
  46.         kuhn(i);
  47.     }
  48.     int cnt = 0;
  49.     for (int i = 0; i < n + 1; i++) {
  50.         if (mpair[i] != -1) {
  51.             cnt++;
  52.         }
  53.     }
  54.     cout << n - cnt << '\n';
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement