Pagini recente » Cod sursa (job #1578371) | Cod sursa (job #448774) | Cod sursa (job #967188) | Cod sursa (job #3180239) | Cod sursa (job #2808350)
#include <bits/stdc++.h>
#define DimMax 10000
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n, m, e;
int a, b;
int l[DimMax + 1], r[DimMax + 1];
vector<int> adj[DimMax + 1];
bool viz[DimMax + 1];
bool pr ( int nod )
{
if ( viz[nod]) return 0;
viz[nod] = 1;
for ( auto v: adj[nod] )
if ( r[v] == 0 )
{
r[v] = nod;
l[nod] = v;
return 1;
}
for ( auto v: adj[nod] )
if ( pr( r[v] ) )
{
r[v] = nod; l[nod] = v;
return 1;
}
return 0;
}
int main()
{
fin >> n >> m >> e;
for(int i = 1; i <= e; i++ )
{
fin >> a >> b;
adj[a].push_back(b);
}
bool ok = 1;
while ( ok )
{
ok = 0;
for ( int i = 1; i <= n; i++ )
viz[i] = 0;
for ( int i = 1; i <= n; i++ )
if ( l[i] == 0 )
ok |= pr(i);
}
int ans = 0;
for ( int i = 1; i <= n; i++ )
if ( l[i] ) ans++;
fout << ans << '\n';
for ( int i = 1; i <= n; i++ )
if ( l[i] )
fout << i << " " << l[i] << '\n';
return 0;
}