Pagini recente » Cod sursa (job #1321105) | Rating Arpintin Tatiana (ASEM_Arpintin_Tatiana) | Cod sursa (job #2729534) | Cod sursa (job #3209363) | Cod sursa (job #1839182)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
const int Nmax = 10001;
vector<int> G[Nmax];
int l[Nmax],r[Nmax],m[Nmax];
int n,M,E;
int add(int x){
if(m[x]) return 0;
m[x]=1;
for(auto it : G[x]){
if(r[it]==0 || add(r[it])){
l[x]=it;
r[it]=x;
return 1;
}
}
return 0;
}
int main(){
in>>n>>M>>E;
while(E--){
int x,y;
in>>x>>y;
G[x].push_back(y);
}
int p=1;
while(p){
p=0;
for(int i=1;i<=n;i++) m[i]=0;
for(int i=1;i<=n;i++) if(!l[i]) p |= add(i);
}
p=0;
for(int i=1;i<=n;i++) if(l[i]) p++;
out<<p<<'\n';
for(int i=1;i<=n;i++) if(l[i]){
out<<i<<' '<<l[i]<<'\n';
}
return 0;
}