Pagini recente » Cod sursa (job #1932524) | Cod sursa (job #2657646) | Cod sursa (job #2596460) | Cod sursa (job #2886879) | Cod sursa (job #2570485)
#include <bits/stdc++.h>
#define NM 10005
using namespace std;
ifstream fin ("cuplaj.in");
ofstream fout ("cuplaj.out");
int N, M, muchii;
int ma[2*NM];
bitset<2*NM> viz;
vector<int> v[2*NM];
bool dfs(int nod)
{
viz[nod] = 1;
for(auto it:v[nod])
if(!ma[it] || (!viz[ma[it]] && dfs(ma[it])))
{
ma[nod] = it;
ma[it] = nod;
return 1;
}
return 0;
}
void read();
int main()
{
read();
bool ok = 1;
while(ok)
{
ok = 0;
for(int i=1; i<=2*N; i++)
viz[i] = 0;
for(int i=1; i<=N; i++)
if(!ma[i] && !viz[i] && dfs(i))
ok = 1;
}
int nr = 0;
for(int i=1; i<=N; i++)
if(ma[i])
nr++;
fout << nr << '\n';
for(int i=1; i<=N; i++)
if(ma[i])
fout << i << ' ' << ma[i]-N << '\n';
return 0;
}
void read()
{
fin >> N >> M >> muchii;
while(muchii--)
{
int x, y;
fin >> x >> y;
v[x].push_back(y+N);
v[y+N].push_back(x);
}
}