• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zad algorytmika - Blokady

Object Storage Arubacloud
0 głosów
167 wizyt
pytanie zadane 29 października 2023 w C i C++ przez VNC Nowicjusz (240 p.)

Witam,

Mam takie o to zadanie:

Dawno, dawno temu był sobie kraj mlekiem i miodem płynacy z rozkoszami, jakich nikt nigdy nie zaznał, gdzie problemy NP-zupełne rozwiazywało sie w czasie liniowym. Kraj ten zwał sie Bajtocja. Bajtocja składa sie z N miast połaczonych siecia dwukierunkowych dróg, w taki sposób, ze miedzy kazdymi dwoma miastami mozna przejechac tylko na jeden sposób bez zawracania.
      Król Bajtazar, aby poprawic humor sobie i swoim poddanym postanowił odnowic najwieksza ilosc dróg w Bajtocji. Niestety, nie pomyslał o tym, ze aby odnowic droge, nalezy najpierw ja zamknac. Poddani oburzyli sie, ze siec dróg bedzie zamknieta. Król bojac sie o swoja popularnosc ogłosił, ze dla kazdego miasta zamknie maksymalnie jedna droge, która przechodzi przez to miasto. Jednoczesnie jednak chce dokonac renowacji najwiekszej liczby dróg. Pomóz mu!
      Napisz program, który: wczyta ilosc miast w Bajtocji oraz opis dróg miedzy miastami, wyznaczy maksymalna liczbe dróg, która mozna poddac naprawom i wypisze wynik na standardowe wyjscie.
WEJSCIE
      W pierwszym wierszu znajduje sie jedna liczba naturalna N , okreslajaca liczbe miast. W kolejnych  N − 1 wierszach znajduje sie opis sieci dróg w Bajtocji. Opis kazdej drogi składa sie z dwóch liczb naturalnych u i v, oddzielonych pojedynczym odstepem i okreslajacych numery miast, które połaczone sa dana droga.
      Miasta numerowane sa kolejnymi liczbami naturalnymi od 1 do N (włacznie).
WYJSCIE
Twój program powinien wypisac na wyjscie dokładnie jedna liczbe całkowita — maksymalna liczbe dróg, które zostana poddane naprawom.
OGRANICZENIA
1 <= N <= 200 000.
PRZYKŁAD
Wejscie

8
1 2
2 3
2 4
3 7
4 5
4 6
6 8

Wyjscie

4

 

Udalo mi sie dojsc tylko do tego, ze ten graf da sie przedstawic jako drzewo.

Z gory dziekuje za wszystkie odpowiedzi.

2 odpowiedzi

0 głosów
odpowiedź 5 listopada 2023 przez Whistleroosh Maniak (56,980 p.)
Zadanie wygląda na programowanie dynamiczne. Ukorzenimy drzewo w wierzchołku 1. Mamy takie stany:

dp[v][0] - maksymalna liczba dróg do naprawy w poddrzewie ukorzenionym w wierzchołku v, zakładając że nie remontujemy drogi między v a którymś z jego dzieci

dp[v][1] - tak samo jak wcześniej, ale zakładamy, że remontujemy jakąś drogę między v i którymś jego dzieckiem

Pozostało wymyślić jak liczyć dp
–1 głos
odpowiedź 5 listopada 2023 przez Michał Kazula Pasjonat (19,540 p.)

No da się przedstawić to za pomocą grafu

I jak mam być szczery to wynik nie jest zgodny z założeniem (opisem).


Król bojac sie o swoja popularnosc ogłosił, ze dla kazdego miasta zamknie maksymalnie jedna droge, która przechodzi przez to miasto.

Zwróć uwagę na to co pogrubiłem. Nie da się zamknąć tylko jednej drogi. 2,4 i 6 mają zamknięte po dwie drogi aby wynik wyniósł 4.

komentarz 5 listopada 2023 przez VNC Nowicjusz (240 p.)
edycja 5 listopada 2023 przez VNC
Zacznijmy od tego, ze graf na rysunku jest skierowany, a powinnien byc nieskierowany. Wynik jest zgody z zalozeniem, mozna usunac droge nr. 1 (1-2), 4 (3-7), 5 (4-5) i 7 (6-8), wtedy dla kazdego miasta zostala usunieta maksymalnie jedna droga polaczona z nim.
komentarz 5 listopada 2023 przez Michał Kazula Pasjonat (19,540 p.)

To że jest skierowany to efekt korzystania z narzędzia do generowania grafów wink

Jeżeli weźmiemy pod uwagę pojedyncze drogi to ma to sens.

Podobne pytania

0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 21 sierpnia 2023 w C i C++ przez VNC Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 398 wizyt
0 głosów
2 odpowiedzi 255 wizyt
pytanie zadane 10 listopada 2016 w Algorytmy przez BlueWee Użytkownik (730 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...