Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <fstream>
- using namespace std;
- vector < vector <int> > g(402);
- vector<int> mt;
- vector<char> used;
- bool kuhn (int v) {
- if (used[v])
- return false;
- used[v] = true;
- for (int i = 0; i < g[v].size(); i++) {
- int to = g[v][i];
- if (mt[to] == -1 || kuhn (mt[to])) {
- mt[to] = v;
- return true;
- }
- }
- return false;
- }
- int main() {
- //freopen ("matching.in", "r", stdin);
- //freopen ("matching.out", "w", stdout);
- int n, m, k;
- cin >> n >> m >> k;
- for (int i = 0; i < k; i++) {
- int x, y;
- cin >> x >> y;
- g[x - 1].push_back(n + y - 1);
- g[n + y - 1].push_back(x - 1);
- }
- mt.assign(m, -1);
- for (int v = 0; v < n; v++) {
- used.assign(n, false);
- kuhn(v);
- }
- int z = 0;
- for (int i = 0; i < m; i++) {
- if (mt[i] != -1)
- z++;
- }
- cout << z << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement