Pagini recente » Cod sursa (job #2146287) | Cod sursa (job #2848171) | Cod sursa (job #762330) | Cod sursa (job #834855) | Cod sursa (job #2847692)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,m,e,i,j,l[10005],r[10005];
vector<int> g[10005];
bool used[10005];
int pairup(const int nod)
{
if(used[nod])return 0;
used[nod]=1;
for(auto it:g[nod])
if(!r[it])
{
l[nod]=it;
r[it]=nod;
return 1;
}
for(auto it:g[nod])
if(pairup(r[it]))
{
l[nod]=it;
r[it]=nod;
return 1;
}
return 0;
}
signed main()
{
fin>>n>>m>>e;
for(int i=1;i<=e;i++)
{
int x,y;
fin>>x>>y;
g[x].push_back(y);
}
bool ok=1;
while(ok)
{
ok=0;
for(i=1;i<=n;i++)
used[i]=0;
for(int i=1;i<=n;i++)
if(!l[i])
ok|=pairup(i);
}
int cnt=0;
for(int i=1;i<=n;i++)
if(l[i])
cnt++;
fout<<cnt<<'\n';
for(int i=1;i<=n;i++)
if(l[i])
fout<<i<<' '<<l[i]<<'\n';
return 0;
}