Cod sursa(job #1630150)

Utilizator AeroHHorea Stefan AeroH Data 4 martie 2016 22:44:17
Problema Cuplaj maxim in graf bipartit Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <bits/stdc++.h>
#define N 10000
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");

int n,m,k,i,C,R[N],L[N],x,y,T[N],O=-1,t=1;
vector<int> v[N];

int P(int n)
{
if (T[n]==t)return 0;
T[n]=t;
for (auto j:v[n])
if (!L[j]||P(L[j])){
    L[j]=n,R[n]=j;
    return 1;
}
return 0;
}

int main()
{
f>>n>>m>>k;
for (i=1;i<=k;++i)
    f>>x>>y,v[x].push_back(y);
for(i=1;i<=n;++i)
    if (!R[i]&&P(i))++t,++C;
g<<C<<'\n';
for (i=1;i<=n;++i)
    if (R[i])g<<i<<" "<<R[i]<<'\n';

    return 0;
}