Pagini recente » Cod sursa (job #1075950) | Cod sursa (job #2558992) | Cod sursa (job #448491) | Cod sursa (job #2530447) | Cod sursa (job #930765)
Cod sursa(job #930765)
#include<fstream>
#include<vector>
#include<cstring>
#define EMAX 100005
#define NMAX 10005
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int N,M,E,U[NMAX],x,y,st[NMAX],dr[NMAX],nr ;
vector<int> L[EMAX];
int cupleaza(int nod)
{
if (U[nod]) return 0;
U[nod]=1;
for (int i=0;i<L[nod].size();i++)
if (!dr[L[nod][i] ] || cupleaza( dr[L[nod][i] ] ) )
{
st[nod]=L[nod][i];
dr[L[nod][i]]=nod;
return 1;
}
return 0;
}
int main()
{
f>>N>>M>>E;
for (int i=1;i<=E;i++)
{
f>>x>>y;
L[x].push_back(y);
}
for (int i=1;i<=N;i++)
if (!st[i])
{
if (cupleaza(i) ) nr++;
else
{
memset(U,0,sizeof(U));
if (cupleaza(i) ) nr++;
}
}
g<<nr<<'\n';
for (int i=1;i<=N;i++)
if (st[i]) g<<i<<" "<<st[i]<<'\n';
return 0;
}