Pagini recente » Rating Mihaila Bogdan (BgdRO) | Cod sursa (job #2585433) | Cod sursa (job #1498340) | Cod sursa (job #598546) | Cod sursa (job #1630288)
#include <vector>
#include <fstream>
#define pb(x) push_back(x)
using namespace std;
vector<int> v[10002];
bool viz[10002];
int rez[10002], sol[10002], n, m, k, x, y, ok;
bool cup( int nod )
{
viz[nod] = true;
for( int i = 0; i < v[nod].size(); i++ )
if( !rez[v[nod][i]] || ( !viz[rez[v[nod][i]]] && cup( rez[v[nod][i]] ) ) )
{
rez[v[nod][i]] = nod;
sol[nod] = v[nod][i];
return true;
}
return false;
}
int main ()
{
int i;
ifstream f( "cuplaj.in" );
ofstream g( "cuplaj.out" );
f >> n >> m >> k;
while( k )
{
f >> x >> y;
v[x].pb( y );
k--;
}
ok = 1;
while( ok )
{
ok = 0;
for( i = 1; i <= n; i++ )
if( !viz[i] && !sol[i] )
if( cup( i ) ) ok++;
for( i = 1; i <= n; i++ )
viz[i] = false;
}
for( i = 1; i <= n; i++ )
if( sol[i] ) ok++;
g << ok << '\n';
for( i = 1; i <= n; i++ )
if( sol[i] )
g << i << " " << sol[i] << '\n';
f.close();
g.close();
return 0;
}