Pagini recente » Cod sursa (job #415799) | Cod sursa (job #109484) | Cod sursa (job #1145467) | Cod sursa (job #2989817) | Cod sursa (job #2341674)
#include<bits/stdc++.h>
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
vector<int> v[10002];
int viz[10002],l[10002],r[10002];
bool f(int nr)
{
if(viz[nr]) return 0;
viz[nr]=1;
for(auto it:v[nr])
if(!r[it])
{
r[it]=nr;
l[nr]=it;
return 1;
}
for(auto it:v[nr])
if(f(r[it]))
{
r[it]=nr;
l[nr]=it;
return 1;
}
return 0;
}
int main()
{
int n,m,s,i,nr1,nr2,ok=1;
in>>n>>m>>s;
while(s--)
{
in>>nr1>>nr2;
v[nr1].push_back(nr2);
}
s=0;
while(ok)
{
ok=0;
memset(viz,0,sizeof(viz));
for(i=1;i<=n;i++)
if(!l[i])
{
m=f(i);
ok|=m;
s+=m;
}
}
out<<s<<"\n";
for(i=1;i<=n;i++)
if(l[i])
out<<i<<" "<<l[i]<<"\n";
return 0;
}