Pagini recente » Cod sursa (job #2461405) | Cod sursa (job #1197120) | Cod sursa (job #2605729) | Cod sursa (job #560215) | Cod sursa (job #1437452)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
int N,M,E,l[10010],r[10010]; vector<int> graf[10010]; bool v[10010];
bool pairup(int nod){
if (v[nod]) return 0;
v[nod]=1;
int i;
for (i=0; i<graf[nod].size(); i++)
if (!r[graf[nod][i]] || pairup(r[graf[nod][i]])){
l[nod]=graf[nod][i];
r[graf[nod][i]]=nod;
return 1;
}
return 0;
}
int main(){
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
fin >> N >> M >> E;
int i,x,y,cnt=0;;
for (i=1; i<=E; i++){
fin >> x >> y;
graf[x].push_back(y);
}
bool ok=1;
while (ok){
ok=0;
memset(v,0,sizeof(v));
for (i=1; i<=N; i++)
if (!l[i])
if (pairup(i)){
ok=1;
cnt++;
}
}
fout << cnt << "\n";
for (i=1; i<=N; i++)
if (l[i])
fout << i << " " << l[i] << "\n";
return 0;
}