Pagini recente » Cod sursa (job #1418747) | Cod sursa (job #2876887) | Cod sursa (job #2884386) | Cod sursa (job #36313) | Cod sursa (job #1849845)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,m,e,i,j,x,y,a[10005],mn,c,ok,p,ct,r1[10005],r2[10005],G[10005];
bool viz[10005];
struct bla{int poz,val;}g1[10005],g2[10005];
vector <int>v[10005];
inline bool cmp(bla A,bla B)
{return A.val<B.val;
}
int main()
{fin>>n>>m>>e;
for(i=1;i<=e;i++)
{fin>>x>>y;
v[x].push_back(y);
g1[x].val++;
g2[y].val++;
G[x]++;
}
for(i=1;i<=n;i++)
g1[i].poz=i;
for(i=1;i<=m;i++)
g2[i].poz=i;
sort(g1+1,g1+n+1,cmp);
for(i=1;i<=n;i++)
{mn=1000000000;
c=g1[i].poz;
//fout<<c<<" "<<G[c]<<"\n";
ok=0;
for(j=0;j<G[c];j++)
{if(viz[v[c][j]]==0&&g2[v[c][j]].val<mn)
{p=v[c][j];
mn=g2[v[c][j]].val;
ok=1;
}
}
if(ok==1){viz[p]=1;
for(j=0;j<G[c];j++)
g2[v[c][j]].val--;
ct++;r1[ct]=c;r2[ct]=p;}
}
fout<<ct<<"\n";
for(i=1;i<=ct;i++)
{fout<<r1[i]<<" "<<r2[i]<<"\n";
}
}