Pagini recente » Cod sursa (job #1147524) | Cod sursa (job #2255098) | Cod sursa (job #652016) | Cod sursa (job #1081549) | Cod sursa (job #930772)
Cod sursa(job #930772)
#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);
}
int ok=1;
while(ok)
{
memset(U,0,sizeof(U));
ok=0;
for (int i=1;i<=N;i++)
if (!st[i])
{if (cupleaza(i) ) {nr++; ok=1;}}
}
g<<nr<<'\n';
for (int i=1;i<=N;i++)
if (st[i]) g<<i<<" "<<st[i]<<'\n';
return 0;
}