Pagini recente » Cod sursa (job #2338844) | Cod sursa (job #2020077)
#include <fstream>
#include <vector>
#include <cstring>
#define DIM 10001
using namespace std;
ifstream fi("cuplaj.in");
ofstream fo("cuplaj.out");
int n,m,e;
int DR[DIM],ST[DIM];
vector<int> V[2*DIM];
int VIZ[2*DIM];
int rez;
bool cuplaj(int v)
{
if(VIZ[v])
return false;
VIZ[v]=1;
for(int i=0;i<V[v].size();i++)
if(!DR[V[v][i]] || cuplaj(DR[V[v][i]]))
{
ST[v]=V[v][i];
DR[V[v][i]]=v;
return true;
}
return false;
}
int main()
{
fi>>n>>m>>e;
for(int i=1;i<=e;i++)
{
int a,b;
fi>>a>>b;
V[a].push_back(b);
}
bool ok=true;
while(ok)
{
ok=false;
memset(VIZ,0,sizeof(VIZ));
for(int i=1;i<=n;i++)
if(!ST[i]&&cuplaj(i))
ok=true;
}
for(int i=1;i<=n;i++)
if(ST[i])
rez++;
fo<<rez<<"\n";
for(int i=1;i<=n;i++)
if(ST[i])
fo<<i<<" "<<ST[i]<<"\n";
fi.close();
fo.close();
return 0;
}