Pagini recente » Cod sursa (job #2090449) | Cod sursa (job #2774557) | Cod sursa (job #2634297) | Cod sursa (job #772875) | Cod sursa (job #3220666)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n, m, e, x, y, cuplaj, sol;
int vis[10005], st[10005], dr[10005];
vector<int>ad[10005];
int cupleaza(int nod){
if(vis[nod])
return 0;
vis[nod]=1;
for(int v : ad[nod])
if(!dr[v]){
st[nod]=v;
dr[v]=nod;
return 1;
}
for(int v : ad[nod]){
if(cupleaza(dr[v])){
st[nod]=v;
dr[v]=nod;
return 1;
}
}
return 0;
}
int main(){
fin>>n>>m>>e;
for(int i=1;i<=e;i++){
fin>>x>>y;
ad[x].push_back(y);
}
cuplaj=1;
while(cuplaj){
cuplaj=0;
for(int i=1;i<=n;i++)
vis[i]=0;
for(int i=1;i<=n;i++)
if(st[i]==0 && cupleaza(i)){
++sol;
cuplaj=1;
}
}
fout<<sol<<'\n';
for(int i=1;i<=n;i++)
if(st[i])
fout<<i<<" "<<st[i]<<"\n";
return 0;
}