Pagini recente » Cod sursa (job #2856250) | Cod sursa (job #1079714) | Cod sursa (job #2556318) | Cod sursa (job #2443113) | Cod sursa (job #1867492)
#include <bits/stdc++.h>
using namespace std;
int st[10010],dr[10010],m,n,e,i,x,y,nr,ok;
vector<int>v[10010];
bool ap[10010];
int cuplaj(int nod)
{
if(ap[nod])return 0;
ap[nod]=1;
for(auto &it: v[nod])
if(!dr[it])
{
dr[it]=nod;
st[nod]=it;
return 1;
}
for(auto &it: v[nod])
if(cuplaj(dr[it])==1)
{
dr[it]=nod;
st[nod]=it;
return 1;
}
return 0;
}
int main()
{
ifstream f ("cuplaj.in");
ofstream g ("cuplaj.out");
f>>n>>m>>e;
for(i=1; i<=e; ++i)
{
f>>x>>y;
v[x].push_back(y);
}
ok=1;
while(ok)
{
ok=0;
for(i=1; i<=n; ++i)
ap[i]=false;
for(i=1; i<=n; ++i)
if(!st[i])ok|=cuplaj(i);
}
for(i=1; i<=n; ++i)
if(st[i])++nr;
g<<nr<<'\n';
for(i=1; i<=n; ++i)
if(st[i])g<<i<<" "<<st[i]<<'\n';
return 0;
}