Pagini recente » Cod sursa (job #1879398) | Cod sursa (job #1155446) | Cod sursa (job #2377937) | Cod sursa (job #1436828) | Cod sursa (job #1613000)
#include<fstream>
#include<vector>
#include<cstring>
#define DIM 20001
using namespace std;
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
vector<int>G[DIM];
int l[DIM],r[DIM],nr,rcard,lcard,M,a,b,i;;
bool v[DIM];
bool cuplaj(int nod)
{
v[nod]=1;
for(unsigned i=0;i<G[nod].size();i++)
if(!r[G[nod][i]])
{
l[nod]=G[nod][i];
r[G[nod][i]]=nod;
return 1;
}
for(unsigned i=0;i<G[nod].size();i++)
{
int value=r[G[nod][i]];
if(!v[value] and cuplaj(value))
{
l[nod]=G[nod][i];
r[G[nod][i]]=nod;
return 1;
}
}
return 0;
}
int main()
{
cin>>rcard>>lcard>>M;
for(i=1;i<=M;i++)
{
cin>>a>>b;
G[a].push_back(b);
}
int ok=1;
while(ok)
{
ok=0;
memset(v,0,sizeof(v));
for(i=1;i<=rcard;i++)
if(!l[i] and cuplaj(i))
{
nr++;
ok=1;
}
}
cout<<nr<<"\n";
for(i=1;i<=rcard;i++)
if(l[i])
cout<<i<<" "<<l[i]<<"\n";
}