Pagini recente » Cod sursa (job #1967345) | Cod sursa (job #2819194) | Cod sursa (job #3233196) | Cod sursa (job #3038341) | Cod sursa (job #1404488)
#include <bits/stdc++.h>
#define N 10005
#define pb push_back
using namespace std;
vector<int>v[N];
int l[N], r[N], sol, n, m, e, i, x, y, ok;
bitset<N>viz;
bool pairup(int nod)
{
if(viz[nod])
return 0;
viz[nod] = 1;
for(auto it : v[nod])
if(!r[it] || pairup(r[it]))
{
l[nod] = it;
r[it] = nod;
return 1;
}
return 0;
}
int main()
{
freopen("cuplaj.in", "r", stdin);
freopen("cuplaj.out", "w", stdout);
scanf("%d%d%d", &n, &m, &e);
for(; e; e--)
{
scanf("%d%d", &x, &y);
v[x].pb(y);
}
for(ok = 1; ok;)
{
ok = 0;
viz = 0;
for(i = 1; i <= n; i++)
if(!l[i] && pairup(i))
{
ok = 1;
sol++;
}
}
printf("%d\n", sol);
for(i = 1; i <= n; i++)
if(l[i])
printf("%d %d\n", i, l[i]);
return 0;
}