Pagini recente » Monitorul de evaluare | Cod sursa (job #659854) | Cod sursa (job #1556329) | Cod sursa (job #1451130) | Cod sursa (job #2473726)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
vector <int> v1[10005],v2[10005];
int pereche[10000];
bool fa_o_pereche(int x)
{
int i,aux;
for(i=0;i<v1[x].size();i++)
if(pereche[ v1[x][i] ] == 0)
{
pereche[ v1[x][i] ]= x;
return true;
}
for(i=0;i<v1[x].size();i++)
{
if(pereche[ v1[x][i] ] == -1)
continue;
aux =pereche[ v1[x][i] ];
pereche[ v1[x][i] ] =-1;
if(fa_o_pereche(aux))
pereche[ v1[x][i] ]= x;
else
pereche[ v1[x][i] ]= aux;
}
return false;
}
int main()
{
int n,m,e,x,y,i,ct=0;
fin>>n>>m>>e;
for(i=1;i<=e;i++)
{
fin>>x>>y;
v1[x].push_back(y);
}
for(i=1;i<=n;i++)
if(fa_o_pereche(i))
{
ct++;
}
fout<<ct<<"\n";
for(i=1;i<=m;i++)
if(pereche[i]!=0)
{
fout<<pereche[i]<<" "<<i<<"\n";
}
return 0;
}