Pagini recente » Cod sursa (job #2637472) | Cod sursa (job #917269) | Cod sursa (job #983049) | Cod sursa (job #59641) | Cod sursa (job #1436533)
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("cuplaj.in");
ofstream fo("cuplaj.out");
int i,nr,n,m,e,x,y,viz[10001],l[10001],r[10001];
vector< int > g[10001];
int p(int x)
{
if (viz[x]) return 0;
viz[x]=1;
for (vector< int >::iterator it=g[x].begin(); it!=g[x].end(); it++)
{
if (!r[*it] || p(r[*it]))
{
l[x]=*it; r[*it]=x;
return 1;
}
}
return 0;
}
int main()
{
fi >> n >> m >> e;
while (e--)
{
fi >> x >> y;
g[x].push_back(y);
}
int ok=1;
while (ok)
{
ok=0;
for (i=1; i<=n; i++) viz[i]=0;
for (i=1; i<=n; i++)
{
if (!l[i])
if (p(i))
nr++,ok=1;
}
}
fo << nr << endl;
for (i=1; i<=n; i++)
if (l[i])
fo << i << ' ' << l[i] << endl;
return 0;
}