Pagini recente » Cod sursa (job #2127844) | Cod sursa (job #1802214) | Statistici Ciobanu Sorina (ciobanusorina05) | Istoria paginii utilizator/losnariu_gabi_fmi_uvt | Cod sursa (job #1441056)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
vector<int> ag[10005];
int l,r,m, pairs[10005], viz[10005];
int inpair(int nod, int color)
{
viz[nod]=color;
for(int i=0;i<ag[nod].size();i++)
{
int vecin=ag[nod][i];
if(viz[vecin]!=color)
{
viz[vecin]=color;
if(pairs[vecin]==0 || inpair(pairs[vecin],color)==1)
{
pairs[nod]=vecin;
pairs[vecin]=nod;
return 1;
}
}
}
return -1;
}
int main()
{
int a,b,i,color=0,numpair=0;
f>>l>>r>>m;
for(i=1;i<=m;i++)
{
f>>a>>b;
b=b+l;
ag[a].push_back(b);
ag[b].push_back(a);
}
int ok=1;
while(ok==1)
{
color++;
ok=0;
for(i=1;i<=l;i++)
if(pairs[i]==0)
if(inpair(i,color)==1)
{
numpair++;
ok=1;
}
}
g<<numpair<<'\n';
for(i=1;i<=l;i++)
if(pairs[i]!=0)
g<<i<<' '<<pairs[i]-l<<'\n';
return 0;
}