Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-03-03 11:59:54.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:cuplaj1.in, cuplaj1.outSursă
AutorAutor necunoscutAdăugată defireatmyselfBogdan-Alexandru Stoica fireatmyself
Timp execuţie pe test0.25 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Cuplaj Maxim

Se numeste graf bipartit un graf G ale carui noduri pot fi partitionate in doua multimi disjuncte A si B astfel incat oricare muchie uneste un nod din A si un nod din B. Cu alte cuvinte, nu exista doua nuduri i si j din aceeasi multime astfel incat sa existe muchie intre ele.

Fie G un graf bipartit. Numim cuplaj o submultime de noduri M \subset A cu proprietatea ca ∀ iM exista un unic jB astfel incat intre i si j sa fie muchie. Numim cuplaj maxim o multime M de cardinal maxim, adica nu exista nicio alta multime M' cu |M'| > |M| (unde cu |M| am notat cardinalul multimii M).

Cerinta

Se da un graf bipartit G. Se cere sa se gaseasca valoarea cuplajului maxim.

Date de intrare

Pe prima linie a fisierului de intrare cuplaj1.in se afla N1, N2 si M. N1 reprezinta numarul de noduri ale multimii A, iar N2 numarul de noduri ale multii B. Pe urmatoarele M linii se afla cate doua numere a si b cu semnificatia ca intre nodurile aA si bB exista muchie.

Date de iesire

In fisierul de iesire cuplaj1.out se va scrie un singur numar, valoarea cuplajului maxim.

Restrictii

  • 1 ≤ N1, N2 ≤ 1000
  • 1 ≤ M ≤ 200 000
  • nodurile multimii A sunt numerotate de la 1 la N1
  • nodurile multimii B sunt numerotate de la 1 la N2

Exemplu

cuplaj1.incuplaj1.out
5 4 6
1 1
2 1
1 4
3 2
5 4
4 2
3

Indicatii

O metoda de rezolvare foloseste algoritmii de flux maxim:
Se construieste un graf G' pornind de la graful G la care mai adaugam doua noduri: o sursa si o destinatie. Toate nodurile multimii A se leaga de sursa respectiva si toate nodurile multimii B se leaga de destinatia respectiva. Se considera ca muchiile grafului G' au capacitatea 1. Valoarea cuplajului maxim in graful G este numeric egala cu valoarea fluxlui maxim din graful G'.

Mai multe detalii despre cuplajul in graf bipartit, precum si probleme asemanatoare se pot gasi in acest aritcol.

Cosmin: bogdane nu imi place ca faci 3 probleme care ar fi putut fi bagate in aceiasi: flux. Daca tot ai facut problema de cuplaj zi solutia misto cu recursivitate care se scrie foarte scurt si algoritmul de cuplaj in O(sqrt(n) * m).

Eu as face din primele 2 probleme de flux una singura. Cu ford fulkerson sa se ia 50 de puncte si cu dinic 100.

Nu e bine sa bagi material mult daca nu e nou, asa numa spamezi arhiva educationala ... si ajunge la fel de greu de folosit ca si cea mare.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?