Pagini recente » Cod sursa (job #3549) | Cod sursa (job #346094) | Cod sursa (job #2140434) | Cod sursa (job #1827436) | Cod sursa (job #2279928)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int N, M, nr, E, u, v, L[10003], R[10003], sel[10003];
vector<int> G[10003];
bool cuplaj(int nod)
{
sel[nod] = true;
for(auto it : G[nod])
if(!R[it])
{
L[nod] = it;
R[it] = nod;
return 1;
}
for(auto it : G[nod])
if(!sel[R[it]] && cuplaj(R[it]))
{
L[nod] = it;
R[it] = nod;
return 1;
}
return 0;
}
int main()
{
f >> N >> M >> E;
for(int i = 1; i <= E; i++)
{
f >> u >> v;
G[u].push_back(v);
}
bool can = true;
while(can)
{
can = false;
for(int i = 1; i <= N; i++)
sel[i] = false;
for(int i = 1; i <= N; i++)
if(!L[i] && !sel[i])
can |= cuplaj(i);
}
for(int i = 1; i <= N; i++) {
if(L[i])
nr++;
}
g << nr << "\n";
for(int i = 1; i <= N; i++) {
if(L[i])
g << i << " " << L[i] << "\n";
}
return 0;
}