Pagini recente » Cod sursa (job #8112) | Cod sursa (job #642238) | Cod sursa (job #2534499) | Istoria paginii utilizator/liiscni_banudbejani | Cod sursa (job #587429)
Cod sursa(job #587429)
# include <fstream>
using namespace std;
ifstream f ("cuplaj.in");
ofstream g ("cuplaj.out");
int sd[10005],ds[10005],i,n,m,e,k,ok,v[10005],x,y;
struct nod
{
int info;
nod *urm;
}*a[10005],*b[10005],*p;
int df (int x)
{
nod *p;
if (v[x]==1)
return 0;
v[x]=1;
p=a[x];
while (p)
{
if (ds[p->info]==0)
{
sd[x]=p->info;
ds[p->info]=x;
return 1;
}
p=p->urm;
}
p=a[x];
while (p)
{
if (df (ds[p->info])==1)
{
sd[x]=p->info;
ds[p->info]=x;
return 1;
}
p=p->urm;
}
return 0;
}
void cuplaj ()
{
int ok=0,i;
while (ok==0)
{
ok=1;
for (i=1;i<=n;i++)
v[i]=0;
for (i=1;i<=n;i++)
if (sd[i]==0)
if (df (i)==1)
{
ok=0;
k++;
}
}
}
int main ()
{
f>>n>>m>>e;
for (i=1;i<=e;i++)
{
f>>x>>y;
p=new nod;
p->info=y;
p->urm=a[x];
a[x]=p;
p=new nod;
p->info=x;
p->urm=b[y];
b[y]=p;
}
cuplaj ();
g<<k<<"\n";
for (i=1;i<=10003;i++)
if (sd[i])
g<<i<<" "<<sd[i]<<"\n";
return 0;
}