Pagini recente » Cod sursa (job #1203960) | Cod sursa (job #2378158) | Cod sursa (job #1568462) | Cod sursa (job #1250367) | Cod sursa (job #1917663)
#include <bits/stdc++.h>
#define pp pair<int,int>
#define x first
#define y second
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int i,j,n,m,fiu[10001],parinte[10001];
bool fv[10001];
vector<int> v[10001];
bool go(int nod)
{
if(fv[nod])
return 0;
fv[nod] = 1;
for(int i = 0 ; i < v[nod].size(); i++)
if(parinte[ v[nod][i] ] == 0)
{
parinte[ v[nod][i] ] = nod;
fiu[ nod ] = v[nod][i];
return 1;
}
for(int i = 0 ; i < v[nod].size(); i++)
if( go( parinte[ v[nod][i] ] ) )
{
parinte[ v[nod][i] ] = nod;
fiu[ nod ] = v[nod][i];
return 1;
}
return 0;
}
int main()
{
fin >> n >> m >> m;
for(i = 1; i <= m; i++)
{
int a,b;
fin >> a >> b;
v[a].push_back(b);
}
for(i = 1; i <= n; i++)
if( go(i) )
{
memset(fv,0,sizeof(fv));
j++;
}
fout<<j<<'\n';
for(i = 1; i <= n; i++)
if(fiu[i])
fout<<i<<" "<<fiu[i]<<'\n';
return 0;
}