Pagini recente » Cod sursa (job #1675590) | Cod sursa (job #193258) | Rating Bolat Alexandra (Alexandrabolat) | Cod sursa (job #1596329) | Cod sursa (job #2154719)
#include <fstream>
#include <cstdio>
#include <vector>
#include <cstring>
#define Nmax 10003
using namespace std;
FILE *f = fopen("cuplaj.in","r");
ofstream g("cuplaj.out");
int n,R[Nmax],L[Nmax],m,e,nr;
bool uz[Nmax];
vector<int> v[Nmax];
bool cup(int nod){
uz[nod] = 1;
for (auto it : v[nod]){
if (!R[it]){
L[nod] = it;
R[it] = nod;
return 1;
}
}
for (auto it : v[nod]){
if (!uz[R[it]] && cup(R[it])){
L[nod] = it;
R[it] = nod;
}
}
return 0;
}
int main()
{
fscanf(f,"%d%d%d",&n,&m,&e);
for (int i=1;i<=e;i++){
int x,y;
fscanf(f,"%d%d",&x,&y);
v[x].push_back(y);
}
int ok = 1;
while (ok){
ok = 0;
for (int i=1;i<=n;i++)
if (!uz[i] && !L[i]) ok |= cup(i);
memset(uz,0,sizeof(uz));
}
for (int i=1;i<=n;i++) if (L[i]) nr++;
g<<nr<<'\n';
for (int i=1;i<=n;i++) if (L[i]) g<<i<<' '<<L[i]<<'\n';
return 0;
}