Pagini recente » Cod sursa (job #861728) | Cod sursa (job #2487624) | Cod sursa (job #894024) | Cod sursa (job #1714429) | Cod sursa (job #901025)
Cod sursa(job #901025)
#include <fstream>
#include <vector>
#include <string.h>
using namespace std;
int N1,N2,st[1000],dr[1000],nr,M,viz[1000];
vector <int > G[1000];
int cupleaza(int nod)
{
int i,vecini;
if (viz[nod]) return 0;
viz[nod]=1;
vecini=G[nod].size();
for(i=0;i<vecini;i++)
{
if(!G[nod][i]) continue;
if (!dr[i+1]||cupleaza(dr[i+1]))
{st[nod]=i+1;
dr[i+1]=nod;
return 1;
}
}
return 0;
}
void cuplaj()
{
int i;
for(i=1;i<=N1;i++)
{
if (st[i]) continue;
if(cupleaza(i)) nr++;
else
{
memset(viz,0,sizeof(viz));
if (cupleaza(i)) nr++;
}
}
}
int main()
{int x,y,E,i;
ifstream f("cuplaj.in");
f>>N1>>N2>>E;
for(i=1;i<=E;i++)
{
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
f.close();
cuplaj();
ofstream g("cuplaj.out");
g<<nr<<"\n";
for(i=1;i<=nr;i++)
g<<st[i]<<" "<<dr[i]<<"\n";
g.close();
return 0;
}