Guest User

Untitled

a guest
Dec 26th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #pragma comment(linker, "/stack:200000000")
  3. #pragma GCC optimize("Ofast,no-stack-protector")
  4. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
  5. #pragma GCC optimize("unroll-loops")
  6. #pragma GCC optimize("fast-math")
  7. using namespace std;
  8.  
  9. const int MAXN = 202;
  10. int a, b, n, m;
  11. bool adj[MAXN][MAXN];
  12. int kek[MAXN];
  13. bool used[MAXN];
  14. int cnt = 0;
  15.  
  16. bool kuhn(int v) {
  17.     used[v] = true;
  18.     for (int i = a + 1; i <= n; i++) {
  19.         if (!adj[i][v]) continue;
  20.         if (!used[i]) {
  21.             if (kek[i] == 0 || kuhn(kek[i])) {
  22.                 kek[i] = v;
  23.                 return true;
  24.             }
  25.         }
  26.     }
  27.     return false;
  28. }
  29.  
  30. int main() {
  31.     ios_base::sync_with_stdio(false);
  32.     cin.tie(0);
  33.     cout.tie(0);
  34.     cin >> a >> b >> m;
  35.     n = a + b;
  36.     for (int i = 0; i < m; i++) {
  37.         int u, v;
  38.         cin >> u >> v;
  39.         v += a;
  40.         adj[v][u] = true;
  41.     }
  42.     for (int i = 1; i <= a; i++) {
  43.         memset(used, false, n);
  44.         if (kek[i] == 0) {
  45.             if (kuhn(i)) {
  46.                 cnt++;
  47.             }
  48.         }
  49.     }
  50.     cout << cnt << '\n';
  51.     for (int i = a + 1; i <= n; i++) {
  52.         if (kek[i] != 0) {
  53.             cout << kek[i] << ' ' << i - a << '\n';
  54.         }
  55.     }
  56.     fflush(stdout);
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment