Pagini recente » Cod sursa (job #2485308) | Cod sursa (job #2988202) | Cod sursa (job #3268728) | Cod sursa (job #2948113) | Cod sursa (job #2418022)
#include<fstream>
#include<queue>
#define DIM 10010
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int st[DIM],dr[DIM],i,a,b,n,m,e,sol,u[DIM];
vector<int> v[DIM];
int solve(int nod)
{
if(u[nod]==1) return 0;u[nod]=1;
for(auto ve:v[nod])
if(st[ve]==0)
{
st[ve]=nod;
dr[nod]=ve;
sol++;
return 1;
}
for(auto ve:v[nod])
if(solve(st[ve]))
{
st[ve]=nod;
dr[nod]=ve;
return 1;
}
return 0;
}
int main()
{
fin>>n>>m>>e;
for(i=1;i<=e;i++)
{
fin>>a>>b;
v[a].push_back(b);
}
int ok=1;
while(ok==1)
{
ok=0;
for(i=1;i<=n;i++) u[i]=0;
for(i=1;i<=n;i++) if(dr[i]==0) ok=max(ok,solve(i));
}
fout<<sol<<"\n";
for(i=1;i<=n;i++)
if(dr[i]!=0) fout<<i<<" "<<dr[i]<<"\n";
return 0;
}