Pagini recente » Cod sursa (job #2789231) | Cod sursa (job #182594) | Cod sursa (job #2369405) | Cod sursa (job #1798462) | Cod sursa (job #2814372)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
const int NMAX=10005;
int N, M, E, l[NMAX], r[NMAX];
vector<int> g[NMAX];
bool viz[NMAX];
int pairup(int nod)
{
if(viz[nod]==true)
return 0;
viz[nod]=true;
for(auto x: g[nod]){
if(r[x]==0){
l[nod]=x;
r[x]=nod;
return 1;
}
}
for(auto x: g[nod]){
if(pairup(r[x])){
l[nod]=x;
r[x]=nod;
return 1;
}
}
return 0;
}
int main()
{
fin>>N>>M>>E;
while(E--){
int x, y;
fin>>x>>y;
g[x].push_back(y);
}
bool ok=true;
while(ok==true){
ok=false;
for(int i=1;i<=N;i++)
viz[i]=false;
for(int i=1;i<=N;i++){
if(l[i]==0){
if(pairup(i))
ok=true;
}
}
}
int sol=0;
for(int i=1;i<=N;i++)
sol+=l[i]!=0;
fout<<sol<<'\n';
for(int i=1;i<=N;i++)
if(l[i]!=0)
fout<<i<<' '<<l[i]<<'\n';
return 0;
}