Advertisement
Guest User

Untitled

a guest
May 28th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. Zadanie w systemie SPOJ (main)
  2. 6631. Za rączki dzieci, za rączki
  3. Kod zadania: ASD10PD
  4.  
  5.  
  6. Twoja siostra, przedszkolanka, ma problem. Chciałaby pójść na spacer z dziećmi z przedszkola, ale trzeba je tak poustawiać dwójkami, aby w parze szły dzieci, które się lubią. W przedszkolu każda dwójka dzieci albo jednocześnie się lubi, albo się nie lubi. W parze nie mogą iść dzieci, które się nie lubią, bo będą rozrabiały na spacerze (tego nie chcemy).
  7.  
  8. Pomóż siostrze i sparuj jak najwięcej dzieci, te które nie da się sparować zostają w przedszkolu (wiem niedydaktyczne - część dzieci idzie, a część nie - dobrze, że nie jestem przedszkolankiem).
  9.  
  10. Pomóż także stwierdzić, czy można podzielić dzieci na dwie grupy tak, że w każdej podgrupie nie ma dwójki lubiących się dzieci.
  11.  
  12. Wejście
  13. Na wejściu pojawi się najpierw n - liczba dzieci w przedszkolu (mniejsza od 50000 - ogromne przedszkole), następnie dodatnia liczba relacji 'lubienia' m (mniejsza od 1000000). Dalej w osobnych liniach pary dzieci, które się lubią:
  14. a1 b1 [dzieci liczymy od 1, a nie jak informatycy od 0]
  15. .....
  16. am bm
  17.  
  18. Wyjście
  19. Należy wypisać T lub N w zależności od tego czy znajdziemy dwie grupy dzieci o podanej charakterystyce; dalej po spacji maksymalną liczbą par, które siostra może wziąźć na spacer (może być 0) posortowana seria liczb przedzielonych spacjami mówiąca o tym jakie pary dzieci bierzemy na spacer. np 1 oznacza, że dziecko a1 i dziecko b1 idą na spacer w parze.
  20.  
  21. Przykład
  22. Wejście:331 22 33 1Wyjście:N 1 1 [równie dobrze odpowiedzią może być 2 albo 3]Wejście:451 22 42 33 14 2 [powtórzenia (to samo co 2 4) mogą się zdarzyć]Wyjście:N 2 2 4 [inną prawidłową odpowiedzią jest 4 5]Wejście:651 23 23 44 16 5Wyjście:T 3 2 4 5 [inna prawidłowa odpowiedz to 1 3 5]
  23. Uwagi do zadania:
  24. Jak łatwo zauważyć będziemy mieli graf w którym należy znaleźć maksymalne skojarzenie (matching). Podział na grupy wg. opisu to pytanie, czy graf jest dwudzielny. Dla grafów dwudzielnych istnieją stosunkowo proste algorytmy znajdujące największe skojarzenie w grafie (algorytm Hopcrofta-Karpa). Skojarzenie w grafach ogólnych można znaleźć przy pomocy algorytmu Edmondsa.
  25.  
  26. Testy zostaną zaliczone jeśli poprawnie zostanie sprawdzona dwudzielność wszystkich grafów. Jeśli nie będzie znajdowane skojarzenie w grafie (np. jest zaimplementowane jedynie znajdowanie skojarzenia w grafach dwudzielnych), to wpisujemy 0 w informacji ile dzieci może iść na spacer.
  27.  
  28. Bibliografia:
  29. - nieśmiertelny Cormen "Wstęp do algorytmów"
  30. - artykuły Aleksandra Schrijvera; w szczególności A Course in Combinatorial Optimization
  31.  
  32. PS. Na wejściu może się pojawić wielokrotna krawędź!
  33.  
  34.  
  35. --------------------------------------------------------------------------------
  36. Dodane przez: Andrzej Jastrzębski
  37. Data dodania: 2010-05-10
  38. Limit czasu wykonania programu: 1s
  39. Limit długości kodu źródłowego 50000B
  40. Języki programowania: C C99 strict C++ 4.0.0-8 C++ 4.3.2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement