Pagini recente » Cod sursa (job #2346175) | Cod sursa (job #2686624) | Cod sursa (job #2539900) | Cod sursa (job #2684637) | Cod sursa (job #3225478)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
long long cuplaj1[10005];
long long cuplaj2[10005];
int n, m,g ;
vector<int> adj[10005];
bool viz[10005];
bool cup(int nod )
{
viz[nod] = true ;
for( auto u : adj[nod] )
{
if ( !cuplaj2[u] || (viz[cuplaj2[u]] == false && cup(cuplaj2[u])) )
{
cuplaj1[nod] = u ;
cuplaj2[u] = nod;
return true ;
}
}
return false ;
}
int main()
{
cin >> n >> m >> g ;
for (int i = 1; i <= g; i ++)
{
int a, b;
cin >> a >> b;
adj[a].push_back(b);
}
bool ok = true ;
long long total = 0;
while (ok)
{
ok = false ;
for( int i = 1; i <= n ; i ++ )
viz[i] = false ;
for ( int i = 1; i <= n ; i ++ )
{
if (cuplaj1[i] == false )
{
if( cup(i) == true )
{
total ++ ;
ok = true ;
}
}
}
}
cout << total << '\n';
for ( int i = 1; i <= n ; i++ )
{
if ( cuplaj1[i] != 0)
{
cout << i << " " << cuplaj1[i] << '\n';
}
}
return 0;
}