Pagini recente » Cod sursa (job #938467) | Istoria paginii runda/leulloe2/clasament | Cod sursa (job #3276976) | Cod sursa (job #828197) | Cod sursa (job #1936479)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
const int pat=10004;
bool viz[pat];
vector <int> v[pat];
int dreapta[pat];
int stanga[pat];
int c;
int cupleaza(int nod)
{
int i, nou,lg;
if(viz[nod])
return 0;
viz[nod]=1;
lg=v[nod].size();
for(i=0;i<lg;i++)
{
nou=v[nod][i];
if(stanga[nou]==0 || cupleaza(stanga[nou]))
{
stanga[nou]=nod;
dreapta[nod]=nou;
return 1;
}
}
return 0;
}
int main()
{int n,m,i,e,x,y,ok;
in>>n>>m>>e;
for(i=1;i<=e;i++)
{
in>>x>>y;
v[x].push_back(y);
}
ok=1;
while(ok)
{
ok=0;
memset(viz, 0 ,sizeof(viz));
for(i=1;i<=n;i++)
if(!dreapta[i])
{
if(cupleaza(i))
ok=1;
}
}
for(i=1;i<=n;i++)
if(dreapta[i])
c++;
out<<c<<'\n';
for(i=1;i<=n;i++)
if(dreapta[i])
out<<i<<" "<<dreapta[i]<<'\n';
return 0;
}