Pagini recente » Cod sursa (job #2764351) | Cod sursa (job #442104) | Cod sursa (job #1091090) | Cod sursa (job #1803809) | Cod sursa (job #2031153)
#include <bits/stdc++.h>
#define Nmax 10001
using namespace std;
int n,m,e,x,y,dr[Nmax],st[Nmax],viz[Nmax],nr,rez;
vector<int> V[Nmax];
bool cup(int nod)
{
viz[nod] = nr;
for (auto it : V[nod])
{
if (!dr[it])
{
dr[it] = nod;
st[nod] = it;
return true;
}
}
for (auto it : V[nod])
{
if (viz[dr[it]]!=nr && cup(dr[it]))
{
dr[it] = nod;
st[nod] = it;
return true;
}
}
return false;
}
int main()
{
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
cin>>n>>m>>e;
for (int i=1;i<=e;i++)
{
cin>>x>>y;
V[x].push_back(y);
}
int ok;
do
{
ok = 0;
nr++;
for (int i=1;i<=n;i++)
if (!st[i] && viz[i]!=nr)
ok |= cup(i);
}while (ok);
for (int i=1;i<=n;i++) if (st[i]) rez++; cout<<rez<<'\n';
for (int i=1;i<=n;i++) if (st[i]) cout<<i<<' '<<st[i]<<'\n';
return 0;
}