Pagini recente » Cod sursa (job #2616763) | Cod sursa (job #2651692) | Cod sursa (job #2806097) | Cod sursa (job #1897542) | Cod sursa (job #2373471)
#include <bits/stdc++.h>
#define Dim 10007
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int N,M,E,a,b,L[Dim],R[Dim],ans;
bool viz[Dim];
vector <int> V[Dim];
int Hopcroft(int nod)
{
if(viz[nod]) return 0;
viz[nod]=1;
for(unsigned int i=0;i<V[nod].size();i++)
{
int vecin=V[nod][i];
if(!R[vecin])
{
L[nod]=vecin;
R[vecin]=nod;
return 1;
}
}
for(unsigned int i=0;i<V[nod].size();i++)
{
int vecin=V[nod][i];
if(Hopcroft(R[vecin]))
{
L[nod]=vecin;
R[vecin]=nod;
return 1;
}
}
return 0;
}
int main()
{
f>>N>>M>>E;
for(int i=1;i<=E;i++)
{
f>>a>>b;
V[a].push_back(b);
}
bool ok=1;
while(ok)
{
ok=0;
for(int i=1;i<=N;i++) viz[i]=0;
for(int i=1;i<=N;i++)
if(L[i]==0)
{
int up=Hopcroft(i);
if(up==1)
{
ok=1;
ans++;
}
}
}
g<<ans<<'\n';
for(int i=1;i<=N;i++)
if(L[i]) g<<i<<" "<<L[i]<<'\n';
return 0;
}