Блог пользователя Mahfuz2411

Автор Mahfuz2411, история, 20 месяцев назад, По-английски

Contest: Codeforces Round 967 (Div. 2) Problem: 2001C - Guess The Tree

Please read my post, and if you don't like it, before downvoting, please leave a comment explaining why you didn't like my post!

I haven't dealt with this type of problem before, so I don't know what's happening here. Please help me.

here is my code

void solve() {
    int n;   cin>>n;
    vector <int> v[1001];
    vector <pair <int,int>> ans;
    for(int i=2; i<=n; i++) {
        cout << "? " << 1 << ' ' << i << endl;
        cout.flush();
        int a;  cin>>a;
        if(a==1) ans.push_back({1, i});
        else v[a].push_back(i);
    }
 
    for(int i=2; i<=n; i++) {
        for(auto j: v[i]) {
            cout << "? " << i << ' ' << j << endl;
            cout.flush();
          
            int a;  cin>>a;
            if(a==-1) exit(0);
            if(a==i or a==j) ans.push_back({i, j});
            else v[a].push_back(j);
        }
    }
 
    cout << "! ";
    for(auto [x,y]: ans) cout << x << ' ' << y << spc;
    cout << newl;
    cout.flush();
    // long_line;
    return;
}

and here is my submission

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
20 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

You may be asking more than the limit.

»
20 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Idleness happens when the tester is waiting for your code to output something but nothing is happening. I recommend you to make you make your own test case and do a hard dry run on that. You can see my submissions on this question to see how I am so eligible to say so :|

»
20 месяцев назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

Your solution is outputting less than n-1 edges, so the validator is wating for more edges to come but your program is waiting for an input from the validator (cin>>n)