Pagini recente » Cod sursa (job #2864279) | Cod sursa (job #108405) | Cod sursa (job #2502420) | Cod sursa (job #1865109) | Cod sursa (job #3269135)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,k,m,x,y,cnt,mt[10005];
vector <int>G[10005];
vector<bool> used(10005, false);
bool kuhn(int v)
{
if(used[v]==1)
return false;
used[v]=true;
for(auto to : G[v])
{
if(mt[to]==-1 || kuhn(mt[to]))
{
mt[to]=v;
return true;
}
}
return false;
}
int main()
{
fin>>n>>k>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
G[x].push_back(y);
}
for(int i=1;i<=k;i++)
mt[i]=-1;
for(int i=1;i<=n;i++)
{
used.assign(n,false);
kuhn(i);
}
for(int i=1;i<=k;i++)
if(mt[i]!=-1)
cnt++;
fout<<cnt<<'\n';
for(int i=1;i<=k;i++)
if(mt[i]!=-1)
fout<<mt[i]<<' '<<i<<'\n';
return 0;
}