Pagini recente » Cod sursa (job #3207052) | Cod sursa (job #71468) | Cod sursa (job #1476492) | Cod sursa (job #940009) | Cod sursa (job #2740379)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
vector<vector<int>> s(10001);
vector<vector<int>> d(10001);
vector<int> l(10001);
vector<int> r(10001);
int rez;
bool pairup(int nod){
for(auto v:s[nod]){
if(r[v]==-1){
r[v]=nod;
l[nod]=v;
rez++;
return 1;
}
}
}
int main(){
int n,m,e;
in>>n>>m>>e;
for(int i=0;i<e;i++){
int x,y;
in>>x>>y;
s[x].push_back(y);
d[y].push_back(x);
}
for(int i=1;i<=n;i++){
l[i]=-1;
}
for(int i=1;i<=m;i++){
r[i]=-1;
}
for(int i=1;i<=n;i++){
if(!pairup(i)){
for(auto v:s[i]){
if(pairup(r[v])){
l[i]=v;
r[v]=i;
rez++;
}
}
}
}
out<<rez<<"\n";
for(int i=1;i<=n;i++){
if(l[i]!=-1){
out<<i<<" "<<l[i]<<"\n";
}
}
}