Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az S. 90. feladat (2014. május)

S. 90. Egy barlang több üregből, és az üregeket összekötő járatokból áll. Egy titkos ügynök elrejtett egy nagy értékű kincset a barlang egyik üregében, mi ezt szeretnénk megtalálni. Ismerjük a barlang felépítését: \(\displaystyle 1\ge N\ge 200\;000\) üregből áll, és bármely két üreget választva pontosan egyféleképp tudunk eljutni az egyikből a másikba. Ráadásul úgy szeretnénk megtalálni a kincset, hogy be sem tesszük a lábunkat a barlangba. Kérdéseket tehetünk fel az ügynöknek, méghozzá a következő formában: ,,A kincs az \(\displaystyle i\)-edik üregben van?'' Erre az ügynök megmondja a helyes választ, és ha nem találtuk el, akkor azt is, hogy az üregből melyik irányban keressük a kincset. A probléma abban rejlik, hogy az ügynök nem szereti a fölöslegesen hosszú kérdezősködést. Emiatt az a feladat, hogy minél kevesebb kérdéssel meg tudjuk mondani, hogy hol van a kincs. Teljes pontszámot csak az a program kaphat, amely a minimális számú kérdés feltevésével megoldja a feladatot, akkor is, ha a legtöbb kérdés feltevését igénylő üregben van a kincs. A programnak tehát azt a kérdésmennyiséget kell megadni, ami a lehető legkisebb, de ennyivel garantáljuk, hogy mindenképp kitalálható, hol van a kincs.

A program olvassa be a standard input első sorából \(\displaystyle N\)-et, majd a következő \(\displaystyle N-1\) sorból a barlang alaprajzát: \(\displaystyle a_i\), \(\displaystyle b_i\) egészeket, melyek az \(\displaystyle a_i\)-edik és \(\displaystyle b_i\)-edik üreg közti járatot jelzik. Megoldásként a program írja a standard output első és egyetlen sorába a kérdések számát.

Pontozás és korlátok: A programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani az 1 mp futásidőkorláton belül. A programot több tesztesetre futtatjuk. Nagyon súlyos hibának számít, ha valahol olyan kérdésszámot ír ki, amennyivel nem oldható meg a feladat. Ha több kérdést ír ki, mint az optimális, akkor arra részpontszám kapható. Tehát amit a program kiír, annyi kérdésből mindenképp ki kell, hogy tudjuk találni a kincs helyét.

Részpontszámok a következőkre kaphatóak:

- a program \(\displaystyle N\le 200\)-ra megoldást ad;

- a program \(\displaystyle N\le 5000\)-re megoldást ad.

Beküldendő egy tömörített s90.zip állományban a program forráskódja (s90.pas, s90.cpp, ...) az .exe és más, a fordító által generált állományok nélkül, valamint a program rövid dokumentációja (s90.txt, s90.pdf, ...), amely a fentieken túl megadja, hogy a forrás mely fejlesztői környezetben fordítható.

(10 pont)

A beküldési határidő 2014. június 10-én LEJÁRT.


Statisztika:

9 dolgozat érkezett.
10 pontot kapott:Makk László.
7 pontot kapott:1 versenyző.
6 pontot kapott:1 versenyző.
5 pontot kapott:1 versenyző.
3 pontot kapott:2 versenyző.
2 pontot kapott:1 versenyző.
1 pontot kapott:1 versenyző.
Nem versenyszerű:1 dolgozat.

A KöMaL 2014. májusi informatika feladatai