Pagini recente » Cod sursa (job #2615243) | Cod sursa (job #1165785) | Cod sursa (job #2218819) | Cod sursa (job #3133557) | Cod sursa (job #2971833)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("cuplaj.in");
ofstream fout ("cuplaj.out");
vector <int> g[10005];
bool cuplaj[10005],viz[10005];
int p[10005];
int n,m,e;
bool dfs (int k)
{
viz[k] = true;
for (auto e:g[k])
{
if (p[e]==0 || (viz[p[e]]==false && dfs(p[e])==true))
{
cuplaj[k] = true;
p[e] = k;
return true;
}
}
return false;
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0);
fout.tie(0);
fin >> n >> m >> e;
int i,j;
for (i=1;i<=e;i++)
{
int x,y;
fin >> x >> y;
g[x].push_back(y);
}
bool siu = true;
int rasp = 0;
while (siu)
{
siu = false;
for (i=1;i<=n;i++)
viz[i] = false;
for (i=1;i<=n;i++)
if (cuplaj[i] == false && dfs(i)==true)
{
rasp++;
siu = true;
}
}
fout << rasp << '\n';
for (i=1;i<=m;i++)
if (p[i]!=0)
fout << p[i] << ' ' << i << '\n';
return 0;
}