TopCoder

Cheng0928
$\huge \color{ProcessBlue}{負けヒ}$

User's AC Ratio

35.3% (6/17)

Submission's AC Ratio

7.3% (33/450)

Tags

Description

有 $N$ 個城市(編號為 $0, ...,n-1$,且最多 $1500$ 個城市),而有些城市間存在飛機航線。每個航線連接兩個城市,而且是雙向的。

大毛想知道是不是所有城市都能直接或間接地搭飛機往來。你不想直接說出答案,所以提議玩個猜謎遊戲。

大毛可以問你「城市 $A$ 和 $B$ 是否有『直接』的航線?」,而你需要立刻回答是或不是。大毛會試圖詢問每一組城市是否存在直接航線,總共問 $r=n(n-1)/2$ 個問題。如果大毛問完所有問題前就能推論出網路是否為連通(即「是否所有城市都能直接或間接搭機往來」),大毛就贏了。反過來,如果大毛需要問完所有 $r$ 個問題才能知道答案,那麼你就贏了。

為了讓遊戲更有趣點,你不需在意真實的飛航網路,且你可以在過程中隨意建構網路,依據大毛之前的提問來決定後面的回答。

你的目標是決定該怎麼回答,才能贏得遊戲。

說明

本題為互動題,你所上傳的程式碼必須包含 initializehasEdge 函式,同時請不要在函式內使用任何 I/O function。

void initialize(int n);

initialize:$n$ 為城市的數量,在測試開始前會先呼叫此函式。

int hasEdge(int a, int b);

hasEdge:詢問 $a$ 和 $b$ 之間是否有邊。回傳值為 $0$ 代表沒邊,其他情況則代表有邊。

範例

一個不會AC的程式碼範例:
int magic[1505];
void initialize(int n){
    for(int i=0;i<n;i++)
        magic[i]=0;
}
int hasEdge(int a, int b){
    return magic[a];
}

Input Format

Output Format

Hints

Problem Source

NEOJ Problem 410

Subtasks

No. Testdata Range Constraints Score
1 0 100

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 6500 262144 65536 1