Pagini recente » Cod sursa (job #1730293) | Cod sursa (job #1623251) | Cod sursa (job #1476467) | Cod sursa (job #2071895) | Cod sursa (job #1645570)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
vector<int>v[10005];
int st[10005],dr[10005];
bool viz[10005],ok=1;
int n,m,x,y,t,con,i;
bool cuplaj(int dad)
{
int i,son;
if(viz[dad])
return 0;
viz[dad]=1;
for(i=0;i<v[dad].size();i++)
{
son=v[dad][i];
if(dr[son]==0)
{
st[dad]=son;
dr[son]=dad;
return 1;
}
if(cuplaj(dr[son]))
{
st[dad]=son;
dr[son]=dad;
return 1;
}
}
return 0;
}
int main()
{
f>>n>>m>>t;
while(t)
{
t--;
f>>x>>y;
v[x].push_back(y);
}
while(ok==1)
{
ok=0;
for(i=1;i<=n;i++)
viz[i]=0;
for(int i=1;i<=n;i++)
if(st[i]==0&&cuplaj(i)==1)
ok=1;
}
for(i=1;i<=n;i++)
if(st[i]!=0)
con++;
g<<con<<"\n";
for(i=1;i<=n;i++)
if(st[i]!=0)
g<<i<<" "<<st[i]<<"\n";
return 0;
}