Danb
跟 Zisk
在上次的較勁之後,發現他們兩個人都太強了,彼此競爭起來根本沒意義。因此他們決定聯手起來玩最近火紅的遊戲 - 「刂鑳神域」!作為封閉者的 Danb
預先得知了裡面的世界地圖,可以當成是一個有 Zisk
找到這支劍。
但是事情沒有那麼簡單,Danb
只能在 Zisk
進入遊戲之前跟他單方向傳遞訊息,這個訊息是一個長度不超過 Zisk
在進入遊戲時會出現在某個點 Zisk
把所有的腦力都拿來記得 Zisk
希望他能經過最少條邊走到
請設計一個 Danb
和 Zisk
溝通的方法。Danb
需要從給定的圖和點 Zisk
需要根據 Danb
的訊息找到正確的路。
首先,請在程式第一行引入標頭檔 "lib0158.h"
請實作以下三個函式:
std::string Danbing(int N, int M, std::vector<int> U, std::vector<int> V, int B)
這個函式會回傳一個字串 Danb
給 Zisk
的訊息。
void Ziskinit(std::string S)
這個函式負責把 Danb
訊息傳給 Zisk
,Danbing
之後所得到的字串。
int Zisking(int N, std::vector<int> adj)
Zisk
所看得到相鄰的點。
這個函式應該回傳一個整數。這個回傳的整數應該是 Zisk
要前進的點。保證呼叫此函式時,Zisk
所在的點不是
評測系統進行測試的方法如下:
1. 你的程式會被編譯成兩個分開的執行檔
2. 系統會先執行 Danbing
一次,取得 Danb
的字串
3. 系統開始執行 Ziskinit
恰一次。
4. 系統會選擇一些起始點 Zisking
若干次。具體來說,對於目前的點 Zisking
回傳的結果是 Zisking
。如果函式輸出的結果不是走到 WA
。請注意,系統可以用任意順序呼叫這些起始點,且保證
請勿使用標準輸入輸出 (stdin/stdout) ,如果使用了可能出現不可預測的結果。
Zisking
時,Zisk
所在的點不是 你可以在此處下載 walking.zip
,內含五個檔案 walking.cpp
、walking.h
、grader.cpp
、compile.sh
、跟compile.bat
。其中 walking.cpp
是你要修改並且上傳的檔案,grader.cpp
是範例評分程式。若要編譯,可以在該目錄內執行 compile.sh
或 compile.bat
,這會產生執行檔 walking
。注意,在這裡walking.cpp
只會被執行一次,和真正的評分程式不同。
範例評分程式 grader.cpp
用以下格式讀取輸入:
...
評分程式會列印出呼叫 Danbing
之後的字串 Zisking
的結果。
如果 Zisking
的回傳結果並不在 adj
內,評分程式會列印 Wrong Answer: Invalid return value
並且結束執行。
如果成功走到 Found, distance = 呼叫次數
,請注意,評分程式不會檢查該路徑是否最短。
如果在Wrong Answer: Haven't found B after N steps
。
本題沒有輸入
本題沒有輸出
IOICamp 2023 Day1 pT
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 範例測資 | 0 |
2 | 0~30 | 無其他限制 | 100 |