Pagini recente » Cod sursa (job #2789322) | Cod sursa (job #2579245) | Cod sursa (job #1084416) | Cod sursa (job #538456) | Cod sursa (job #3032921)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
vector <int> v[10001];
int n,m,e,st[10001],dr[10001],x,y,k=1,l;
bool viz[10001];
bool cuplu(int nod)
{
if(viz[nod]==1)return 0;
viz[nod]=1;
for(int i=0;i<v[nod].size();i++)
{
int vecin=v[nod][i];
if(!st[vecin]||cuplu(st[vecin]))
{
dr[nod]=vecin;
st[vecin]=nod;
return 1;
}
}
return 0;
}
int main()
{
fin>>n>>m>>e;
for(int i=1;i<=e;i++)
{
fin>>x>>y;
v[x].push_back(y);
}
while(k)
{
memset(viz,0,sizeof(viz));
k=0;
for(int i=1;i<=n;i++)if(dr[i]==0&&cuplu(i))k=1;
}
for(int i=1;i<=n;i++)if(dr[i])l++;
fout<<l<<'\n';
for(int i=1;i<=n;i++)if(dr[i])fout<<i<<" "<<dr[i]<<'\n';
return 0;
}