Pagini recente » Cod sursa (job #1691557) | Cod sursa (job #1208035) | Cod sursa (job #2352477) | Cod sursa (job #1772009) | Cod sursa (job #2453647)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int nani[10005],l[10005],r[10005],n,cmax;
vector <int> v[10005];
int cupleaza (int nod)
{
int i,it;
nani[nod]=1;
for (i=0;i<v[nod].size();i++)
{
it=v[nod][i];
if (r[it]==0)
{
l[nod]=it;
r[it]=nod;
return 1;
}
}
for (i=0;i<v[nod].size();i++)
{
it=v[nod][i];
if (!nani[r[it]]&&cupleaza(r[it])!=0)
{
l[nod]=it;
r[it]=nod;
}
}
return 0;
}
void solve ()
{
int ok=1,i;
while (ok==1)
{
ok=0;
for (i=1;i<=n;i++)
{
nani[i]=0;
}
for (i=1;i<=n;i++)
{
if (l[i]==0&&nani[i]==0)
{
if (cupleaza(i)!=0)
{
ok=1;
cmax++;
}
}
}
}
}int m,e,x,y,i;
int main()
{
f>>n>>m>>e;
cmax=0;
for (i=1;i<=e;i++)
{
f>>x>>y;
v[x].push_back(y);
}
solve();
g<<cmax<<'\n';
for (i=1;i<=n;i++)
{
if (l[i]!=0)
{
g<<i<<" "<<l[i]<<'\n';
}
}
return 0;
}