Pagini recente » Cod sursa (job #3349171) | Cod sursa (job #980224) | Cod sursa (job #1108287) | Cod sursa (job #2820670) | Cod sursa (job #1498683)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
const int Nmax = 10001;
vector<int> G[Nmax];
int N,M,E,l[Nmax],r[Nmax],m[Nmax];
int ap(int x){
if(m[x]) return 0;
m[x]=1;
for(vector<int>::iterator it=G[x].begin();it!=G[x].end();++it){
if( !r[*it] || ap(r[*it]) ){
l[x]=*it,r[*it]=x;
return 1;
}
}
return 0;
}
int main(){
in>>N>>M>>E;
int x,y;
for(int i=1;i<=E;i++){
in>>x>>y;
G[x].push_back(y);
}
int p=1;
while(p){
for(int i=1;i<=N;i++) m[i]=0; p=0;
for(int i=1;i<=N;i++) if(!l[i]) p|=ap(i);
}
int k=0;
for(int i=1;i<=N;i++) if(l[i]) k++;
out<<k<<'\n';
for(int i=1;i<=N;i++) if(l[i]) out<<i<<' '<<l[i]<<'\n';
return 0;
}