Pagini recente » Cod sursa (job #491230) | Cod sursa (job #2099475) | Cod sursa (job #2010760) | Cod sursa (job #84867) | Cod sursa (job #2572784)
#include <bits/stdc++.h>
#define Nmax 10005
using namespace std;
ifstream fin ("cuplaj.in");
ofstream fout ("cuplaj.out");
vector <int> v[2*Nmax];
int viz[2*Nmax], ma[2*Nmax], ok, n, m, e, k;
int dfs(int nod)
{
viz[nod]=1;
for(auto it:v[nod])
if(!ma[it] || (!viz[ma[it]] && dfs(ma[it])))
{
ma[it]=nod;
ma[nod]=it;
return 1;
}
return 0;
}
int main()
{
fin >> n >> m >> e;
for(int i=1;i<=e;i++)
{
int x, y;
fin >> x >> y;
v[x].push_back(y+n);
v[y+n].push_back(x);
}
ok=1;
while(ok)
{
ok=0;
memset(viz, 0, sizeof(viz));
for(int i=1;i<=n;i++)
if(!viz[i] && !ma[i] && dfs(i))
ok=1;
}
for(int i=1;i<=n;i++)
if(ma[i])
k++;
fout << k << '\n';
for(int i=1;i<=n;i++)
if(ma[i])
fout << i << ' ' << ma[i]-n << '\n';
return 0;
}