Pagini recente » Cod sursa (job #1104691) | Cod sursa (job #2138213) | Cod sursa (job #1469605) | Cod sursa (job #728423) | Cod sursa (job #1217674)
#include<fstream>
#include<vector>
#define pb push_back
using namespace std;
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
const int nmax = 10010;
vector<int> g[nmax];
int n,m,edges;
int viz[nmax],f[nmax],l[nmax];
int kuhn(int v)
{
if (viz[v]==1) return 0;
viz[v]=1;
for (int i=0;i<g[v].size();i++)
{
int to=g[v][i];
if (f[to]==-1 || kuhn(f[to]))
{
f[to]=v;
l[v]=to;
return 1;
}
}
return 0;
}
int main()
{
cin>>n>>m>>edges;
while (edges--)
{
int x,y;
cin>>x>>y;
g[x].pb(y);
}
int k=0,i;
for (i=1;i<=m;i++) f[i]=-1;
for (int ind=1;ind;)
{
ind=0;
for (i=1;i<=n;i++) viz[i]=0;
for (i=1;i<=n;i++)
if (l[i]==0) ind+=kuhn(i);
}
for (i=m;i>0;i--) if (f[i]!=-1) k++;
cout<<k<<"\n";
for (i=m;i>0;i--) if (f[i]!=-1) cout<<f[i]<<" "<<i<<"\n";
return 0;
}