Pagini recente » Cod sursa (job #971605) | Cod sursa (job #1609337) | Cod sursa (job #976467) | Cod sursa (job #218404) | Cod sursa (job #3334273)
#include<fstream>
#include<cstdio>
#include<vector>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
vector<int>v[10001];
int n,m,i,j,a,b,c,l[10001],r[10001],e;
int viz[10001];
int cuplaj;
bool pairup(int x)
{
if(viz[x]) return 0;
viz[x]=1;
for(auto y: v[x])
{
if(r[y]==0)
{
l[x]=y;
r[y]=x;
return 1;
}
}
for(auto y: v[x])
{
if(pairup(r[y]))
{
l[x]=y;
r[y]=x;
return 1;
}
}
return 0;
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0);
fin>>n>>m>>e;
for(i=1;i<=e;++i)
{
fin>>a>>b;
v[a].push_back(b);
}
bool ok=0;
do
{
ok=0;
for(i=1;i<=n;++i)
{
viz[i]=0;
}
for(i=1;i<=n;++i)
{
if(l[i]==0)
ok|=pairup(i);
}
}while(ok);
for(i=1;i<=n;++i)
{
if(l[i])
cuplaj++;
}
fout<<cuplaj<<'\n';
for(i=1;i<=n;++i)
{
if(l[i])
fout<<i<<" "<<l[i]<<'\n';
}
return 0;
}