Pagini recente » Istoria paginii runda/no_more_wheels | Cod sursa (job #2887386) | Cod sursa (job #1572633) | Cod sursa (job #2416935) | Cod sursa (job #2848117)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,m,e,ok,nr;
vector<int>v[10005];
int st[10005],dr[10005],viz[10005];
int pairup(int nod)
{
if(viz[nod]) return 0;
viz[nod]=1;
for(int i=0; i<v[nod].size(); i++)
{
int x=v[nod][i];
if(!st[x]||pairup(st[x]))
{
dr[nod]=x;
st[x]=nod;
return 1;
}
}
return 0;
}
int main()
{
fin>>n>>m>>e;
int i,x,y;
for(i=1; i<=e; i++)
{
fin>>x>>y;
v[x].push_back(y);
}
ok=1;
while(ok)
{
memset(viz,0,sizeof(viz));
ok=0;
for(i=1; i<=n; i++)
{
if(!dr[i]&&pairup(i))ok=1;
}
}
for(i=1; i<=n; i++)
{
if(dr[i])nr++;
}
fout<<nr<<'\n';
for(i=1; i<=n; i++)if(dr[i])
{
fout<<i<<" "<<dr[i]<<'\n';
}
return 0;
}