Pagini recente » Cod sursa (job #1813804) | Cod sursa (job #3175335) | Cod sursa (job #410693) | Cod sursa (job #2417608) | Cod sursa (job #1389393)
#include <iostream>
#include <vector>
#define NMAX 10001
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
vector<int> G[NMAX];
int Cupleaza(int nod)
{ int k;
if (U[nod])
return 0;
U[nod]=1;
for (k=0; k<G[nod].size(); ++k)
if (!st[G[nod][k] || Cupleaza(st[G[nod][k]))
{ dr[nod]=G[nod][k];
st[G[nod][k]]=nod;
return 1;
}
return 0;
}
int main()
{ f>>n1>>n2>>m;
for (; m; --m)
{ f>>i>>j;
G[i].push_back(j);
G[j].push_back(i);
}
for (i=1; i<=n1; ++i)
if (!dr[i])
{ if (Cupleaza(i))
++nr;
else
{ for (int j=1; j<=n1; ++j)
U[j]=0;
Cupleaza(j);
}
}
g<<nr<<'\n';
for (i=1; i<=n1; ++i)
if (dr[i])
g<<i<<' '<<dr[i]<<'\n';
return 0;
}