Pagini recente » Cod sursa (job #682966) | Cod sursa (job #2660517) | Cod sursa (job #3166477) | Cod sursa (job #918712) | Cod sursa (job #398723)
Cod sursa(job #398723)
#include<stdio.h>
#include<vector>
#include<string.h>
using namespace std;
vector<int> l[ 10007 ],r[ 10007 ];
int m,i,j,k,a,b,s[ 10007 ],d[ 10007 ],nr,L,R;
bool viz[ 10007 ],ok;
bool Pair(int nod){
if(viz[nod])return false;
viz[nod] = true;
int N = l[nod].size(),i;
for(i = 0 ; i < N ; i++)
if(!d[l[nod][i]] || Pair(d[l[nod][i]]))
{s[nod] = l[nod][i];
d[l[nod][i]] = nod;
return true;
}
return 0;
}
int main(){
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
scanf("%d %d",&L,&R,&m);
for(i = 1 ; i <= m ;i++)
{scanf("%d %d",&a,&b);
l[a].push_back(b);
r[b].push_back(a);
}
ok = 1;
while(ok){
memset(viz,0,sizeof(viz));
ok = false;
for(i = 1 ; i <= L ; i++)
if(!s[i] && Pair(i))
{nr++;
ok = true;
}
}
printf("%d\n",nr);
for(i = 1 ; i <= L;i++)
if(s[i])
printf("%d %d\n",i,s[i]);
return 0;}