Pagini recente » Cod sursa (job #343903) | Cod sursa (job #2962125) | Cod sursa (job #1911422) | Cod sursa (job #776339) | Cod sursa (job #3278354)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int n,m,e,used[10006],i,j,a,b,ok,to[10006],from[10006],ans;
vector<int>v[10006];
bool cupleaza(int node){
if (used[node]==1)return 0;
used[node]=1;
for (auto it:v[node]){
if (!from[it]){
to[node]=it;
from[it]=node;
return 1;
}
}
for (auto it:v[node]){
if (cupleaza(from[it])){
to[node]=it;
from[it]=node;
return 1;
}
}
return 0;
}
int main()
{ f>>n>>m>>e;
for (i=1;i<=e;i++){
f>>a>>b;
v[a].push_back(b);
}
ok=1;
while(ok){
ok=0;
for (i=1;i<=n;i++)used[i]=0;
for (i=1;i<=n;i++){
if (!to[i]){
ok|=cupleaza(i);
}
}
}
for (i=1;i<=n;i++){
if(to[i])ans++;
}
g<<ans<<'\n';
for (i=1;i<=n;i++){
if (to[i])
g<<i<<' '<<to[i]<<'\n';
}
return 0;
}