Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include<iostream>
  2. #include<set>
  3. #include<vector>
  4. #include<algorithm>
  5. #include<cmath>
  6. #include<map>
  7. #include<string>
  8. #include<queue>
  9. #include<fstream>
  10. #include<iomanip>
  11. using namespace std;
  12. int u, mt[100], used[100];
  13. vector<int> g[100];
  14. vector<pair<int, int> > pr;
  15. bool khun(int v)
  16. {
  17.     if (used[v] == u)
  18.         return false;
  19.     used[v] = u;
  20.     for (int i = 0; i < g[v].size(); i++)
  21.     {
  22.         int to = g[v][i];
  23.         if (mt[to] == -1 || khun(mt[to]))
  24.         {
  25.             mt[to] = v;
  26.             return true;
  27.         }
  28.     }
  29.     return false;
  30. }
  31. int main()
  32. {
  33.     ios_base::sync_with_stdio(0);
  34.     cin.tie(0);
  35.     cout.tie(0);
  36.     int n, k, m, x, y;
  37.     memset(mt, -1, 100);
  38.     cin >> n >> k >> m;
  39.     for (int i = 0; i < m; i++)
  40.     {
  41.         cin >> x >> y;
  42.         x--;
  43.         y--;
  44.         g[x].push_back(y);
  45.     }
  46.     for (int i = 0; i < n; i++)
  47.     {
  48.         u = i + 1;
  49.         khun(i);
  50.     }
  51.     for (int i = 0; i < k; i++)
  52.         if (mt[i] != -1)
  53.             pr.push_back(make_pair(mt[i] + 1, i + 1));
  54.     cout << pr.size() << endl;
  55.     for (int i = 0; i < pr.size(); i++)
  56.         cout << pr[i].first << ' ' << pr[i].second << endl;
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement