Pagini recente » Cod sursa (job #2528658) | Cod sursa (job #3224651) | Cod sursa (job #386124) | Cod sursa (job #2420488) | Cod sursa (job #2313293)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#define nmx 10005
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,m,i,j,e,x,rz;
int u[nmx],l[nmx],r[nmx];
vector<int> ad[nmx];
int pairing(int n)
{
if(u[n]) return 0;
u[n]=1;
for(int i:ad[n])
if(!r[i])
{
l[n]=i;
r[i]=n;
return 1;
}
for(int i:ad[n])
if(pairing(r[i]))
{
l[n]=i;
r[i]=n;
return 1;
}
return 0;
}
int main() {
fin>>n>>m>>e;
while(e--)
{
fin>>i>>j;
ad[i].push_back(j);
}
for(int ok=1;ok;)
{
ok=0;
memset(u,0,sizeof(u));
for(i=1;i<=n;i++)
if(!l[i])
{
x=pairing(i);
ok|=x;
}
}
for(i=1;i<=n;i++)
if(l[i]) rz++;
fout<<rz<<"\n";
for(i=1;i<=n;i++)
if(l[i]) fout<<i<<" "<<l[i]<<"\n";
}