Pagini recente » Cod sursa (job #819291) | Cod sursa (job #1794715) | Cod sursa (job #240332) | Cod sursa (job #1973157) | Cod sursa (job #240059)
Cod sursa(job #240059)
#include <cstdio>
#include <vector>
#define N 10001
using namespace std;
int tata[N],n,m,e,i,x,y,flux;
short int E[N];
vector<int> L[N];
int dfs(int nod)
{
if (nod==-1) return 1;
if (E[nod]) return 0;
E[nod]=1;
vector<int>::iterator it;
for (it=L[nod].begin(); it!=L[nod].end(); it++)
if (dfs(tata[*it]))
{
tata[*it]=nod;
return 1;
}
return 0;
}
int main()
{
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
scanf("%d%d%d\n",&n,&m,&e);
for (i=1; i<=e; i++)
{
scanf("%d%d\n",&x,&y);
L[x].push_back(y);
}
memset(tata,-1,sizeof(tata));
flux=0;
for (i=1; i<=n; i++)
{
memset(E,0,sizeof(E));
if (dfs(i)) flux++;
}
printf("%d\n",flux);
for (i=1; i<=m; i++)
if (tata[i]) printf("%d %d\n",tata[i],i);
return 0;
}