Pagini recente » Cod sursa (job #3248267) | Cod sursa (job #798327) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #2588682) | Cod sursa (job #929055)
Cod sursa(job #929055)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int ok,j,i,x,y,n,m,e,nr,viz[10100],st[10010],dr[10010],rez[10010];
vector<int>a[10010];
vector<int>b[10010];
int cupleaza(int x)
{
int i;
if(viz[x])
return 0;
viz[x]=1;
for(i=0;i<a[x].size();++i)
if(!dr[a[x][i]]||cupleaza(dr[a[x][i]]))
{
st[x]=a[x][i];
dr[a[x][i]]=x;
return 1;
}
return 0;
}
int main()
{
f>>n>>m>>e;
for(i=1;i<=e;++i)
{
f>>x>>y;
a[x].push_back(y);
// b[y].push_back(x);
}
ok=1;
viz[1]=1;
while (ok)
{
ok=0;
for(i=1;i<=n;++i)
if(!st[i])
if(cupleaza(i))
ok=1;
for( int i=1; i<=n; ++i )
viz[i]=0;
}
for( int i=1; i<=n; ++i )
if( st[i] )
{
nr++;
rez[nr]=i;
nr++;
rez[nr]=st[i]; }
g<<nr/2<<'\n';
for(i=1;i<=nr;i=i+2)
g<<rez[i]<<' '<<rez[i+1]<<'\n';
return 0;
}