Pagini recente » Cod sursa (job #2322037) | Cod sursa (job #2547947) | Cod sursa (job #2082610) | Cod sursa (job #3278271) | Cod sursa (job #2641476)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int n,m,e,a,b,cnt,L[10010],R[10010];
vector<int> v[10010];
bitset<10010> viz;
bool trai(int poz){
if(viz[poz])return 0;
viz[poz]=1;
for(auto it:v[poz])
if(!R[it]){
R[it]=poz;
L[poz]=it;
return 1;
}
for(auto it:v[poz])
if(trai(R[it])){
R[it]=poz;
L[poz]=it;
return 1;
}
return 0;
}
int main(){
f>>n>>m>>e;
for(int i=1;i<=e;i++){
f>>a>>b;
v[a].push_back(b);
}
bool ok=1;
while(ok){
ok=0;
viz.reset();
for(int i=1;i<=n;i++)
if(!L[i]&&!viz[i])
if(trai(i)){
ok=1;cnt++;
}
}
g<<cnt<<'\n';
for(int i=1;i<=n;i++)
if(L[i])
g<<i<<' '<<L[i]<<'\n';
}