De ce dintre urmatoarele 2 functii de cuplare
inline bool pair_up(int x) {
if(used[x])
return 0;
used[x] = 1;
for(size_t i = 0; i < v[x].size(); ++i) {
int y = v[x][i];
if(!R[y]) {
L[x] = y;
R[y] = x;
return 1;
}
}
for(size_t i = 0; i < v[x].size(); ++i) {
int y = v[x][i];
if(pair_up(R[y])) {
L[x] = y;
R[y] = x;
return 1;
}
}
return 0;
}
si
inline bool pair_up(int x) {
if(used[x])
return 0;
used[x] = 1;
for(size_t i = 0; i < v[x].size(); ++i) {
int y = v[x][i];
if(!R[y] || pair_up(R[y])) {
L[x] = y;
R[y] = x;
return 1;
}
}
return 0;
}
prima este mai rapida?
Cu alte cuvinte, de ce este mai rapid ca intai sa cuplez nodul x cu un nod catre care am muchie si nu este cuplat, iar abia apoi sa incerc sa-l cuplez cu un nod catre care am muchie si pe care-l decuplez de nodul cu care acesta era cuplat?