Pagini recente » Cod sursa (job #1666682) | Cod sursa (job #200395) | Cod sursa (job #1547614) | Istoria paginii utilizator/katmangrim | Cod sursa (job #1964372)
#import<bits/stdc++.h>
using namespace std;
const int N=10005;vector<int>G[N];
int x,y,n,m,e,i,V[N],R[N],L[N],v[N],E;bool F=1;
bool B(int x){if(V[x])return 0;V[x]=1;int i=0,l=G[x].size(),y;for(;i<l;i++){y=G[x][i];if(R[y]==0){L[x]=y,R[y]=x;return 1;}}
for(i=0;i<l;i++){y=G[x][i];if(R[y]&&B(R[y])){L[x]=y,R[y]=x;return 1;}}}
ifstream f("cuplaj.in");ofstream g("cuplaj.out");main(){
for(f>>n>>m>>e;e--;){f>>x>>y;G[x].push_back(y);}
while(F){
F=0;memset(V,0,sizeof(V));
for (i=1;i<=n;i++)if(L[i]==0)F|=B(i);}
for(i=1;i<=n;i++)if(L[i])v[++E]=i;for(i=1,g<<E<<'\n';i<=E;i++)g<<v[i]<<' '<<L[v[i]]<<'\n';}