Pagini recente » Cod sursa (job #762814) | Cod sursa (job #113420) | Cod sursa (job #1863075) | Cod sursa (job #2970870) | Cod sursa (job #2417612)
#include <bits/stdc++.h>
using namespace std;
int x,y,n,m,e,i,st[10010],dr[10010],ans,ok=1;
vector<int>g[10010];
bool ap[10010];
int cuplaj(int node)
{
if(ap[node])return 0;
ap[node]=true;
for(auto &it:g[node])
if(!st[it])
{
st[it]=node;
dr[node]=it;
return 1;
}
for(auto &it:g[node])
if(cuplaj(st[it])!=0)
{
st[it]=node;
dr[node]=it;
return 1;
}
return 0;
}
int main()
{
ifstream cin ("cuplaj.in");
ofstream cout ("cuplaj.out");
cin>>n>>m>>e;
for(i=1; i<=e; ++i)
{
cin>>x>>y;
g[x].push_back(y);
}
while(ok)
{
ok=0;
memset(ap,0,sizeof(ap));
for(i=1; i<=n; ++i)
if(!dr[i])ok|=cuplaj(i);
}
for(i=1; i<=n; ++i)
if(dr[i])++ans;
cout<<ans<<'\n';
for(i=1; i<=n; ++i)
if(dr[i])cout<<i<<" "<<dr[i]<<'\n';
return 0;
}