Pagini recente » Cod sursa (job #1055160) | Cod sursa (job #350609) | Cod sursa (job #3192312) | Cod sursa (job #2710122) | Cod sursa (job #1416523)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
#define dim 10005
int N,M,E;
vector<int> v[dim];
int L[dim],R[dim];
int Cuplaj = 0;
bool seen[dim];
bool Cuplat(int x)
{
if(seen[x])
return 0;
seen[x] = 1;
for(int i = 0; i < v[x].size(); i++){
if(!R[v[x][i]] || Cuplat(R[v[x][i]])){
L[x] = v[x][i];
R[v[x][i]] = x;
return 1;
}
}
return 0;
}
int main()
{
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
fin >> N >> M >> E;
for(int i = 1; i <= E; i++){
int x,y;
fin >> x >> y;
v[x].push_back(y);
}
bool Better = 1;
while(Better)
{
Better = 0;
memset(seen,0,sizeof seen);
for(int i = 1; i <= N; i++)
if(!L[i] && Cuplat(i)){
++Cuplaj;
Better = 1;
}
}
fout << Cuplaj << "\n";
for(int i = 1; i <= N; i++)
if(L[i])
fout << i << " " << L[i] << "\n";
}