Pagini recente » Cod sursa (job #1657748) | Cod sursa (job #1611902) | Cod sursa (job #1524747) | Cod sursa (job #1261103) | Cod sursa (job #968144)
Cod sursa(job #968144)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <bitset>
#include <queue>
#include <deque>
#include <list>
#include <set>
#include <ctime>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;
ifstream ff("cuplaj.in");
ofstream gg("cuplaj.out");
#define max 10001
vector<int> vv[max];
int n, m, k, aa[max], bb[max];
bool ww[max];
bool dfs(int a){
int b, l;
if(ww[a]) return 0;
ww[a]=1;
l=vv[a].size();
for(int i=0;i<l;i++){
b=vv[a][i];
if(bb[b]==0 || dfs(bb[b])){
bb[b]=a;
aa[a]=b;
return 1;
}
}
return 0;
}
void cup(){
int c=0;
bool r=1;
while(r){
memset(ww, 0, sizeof(ww));
r=0;
for(int i=1;i<=n;i++)
if(aa[i]==0 && dfs(i)){
c+=1;
r=1;
}
}
gg << c << endl;
for(int i=1;i<=n;i++)
if(aa[i]) gg << i << " " << aa[i] << "\n";
}
int main(){
int a, b;
ff >> n >> m >> k;
for(int i=0;i<k;i++){
ff >> a >> b;
vv[a].push_back(b);
}
cup();
}