Cod sursa(job #2771475)

Utilizator Uriesu_IuliusUriesu Iulius Uriesu_Iulius Data 27 august 2021 15:21:10
Problema Cuplaj maxim in graf bipartit Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ipair pair<int, int>

ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");

const int mxN=1e4;
int n, m, k, mt[mxN+1];
vector<int> G[mxN+1];
bool vis[mxN+1];

bool dfs(int u)
{
    vis[u]=1;
    for(int v : G[u])
        if(!mt[v] || !vis[mt[v]] && dfs(mt[v]))
        {
            mt[v]=u;
            return 1;
        }
    return 0;
}

int main()
{
    fin >> n >> m >> k;
    for(int i=0; i<k; i++)
    {
        int a, b;
        fin >> a >> b;
        G[a].push_back(b);
    }
    int flow=0;
    for(int i=1; i<=n; i++)
    {
        memset(vis, 0, sizeof(vis));
        flow+=dfs(i);
    }
    fout << flow << '\n';
    for(int i=1; i<=m; i++)
        if(mt[i]!=0)
            fout << mt[i] << ' ' << i << '\n';
    return 0;
}