Pagini recente » Cod sursa (job #2570496) | Cod sursa (job #1410965) | Cod sursa (job #319878) | Cod sursa (job #2510494) | Cod sursa (job #697282)
Cod sursa(job #697282)
#include <vector>
#include <fstream>
#define pb(x) push_back(x)
using namespace std;
vector<int> v[10002];
bool viz[10002];
int rez[10002],sol[10002],n,m,k,x,y,ok;
bool cup(int nod)
{viz[nod]=true;
for(int i=0;i<v[nod].size();i++)
if(!rez[v[nod][i]]||(!viz[rez[v[nod][i]]]&&cup(rez[v[nod][i]])))
{rez[v[nod][i]]=nod; sol[nod]=v[nod][i];return true;}
return false;}
int main ()
{int i;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
f>>n>>m>>k;
while(k)
{f>>x>>y;
v[x].pb(y);
k--;}
ok=1;
while(ok)
{ok=0;
for(i=1;i<=n;i++)
if(!viz[i]&&!sol[i])
if(cup(i)) ok++;
for(i=1;i<=n;i++)
viz[i]=false;
}
for(i=1;i<=n;i++)
if(sol[i]) ok++;
g<<ok<<'\n';
for(i=1;i<=n;i++)
if(sol[i])
g<<i<<" "<<sol[i]<<'\n';
f.close(); g.close();
return 0;
}