Submission #1333725

#TimeUsernameProblemLanguageResultExecution timeMemory
1333725eri16Speedrun (RMI21_speedrun)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "speedrun.h"

using namespace std;

vector <int> adj[1005];
vector <int> prev;
vector <int> dfs_ord;

void dfs(int node, int parent){
    dfs_ord.push_back(node);
    prev[node]=parent;
    for (auto child : adj[node]){
        if (child!=parent){
            dfs(child,node);
        }
    }
}

void assignHints(int subtask, int N, int A[], int B[]){ 
    for (int i=1; i<=N; i++){
        adj[i].clear();
    }
    
    prev.assign(1005, 0);
    dfs_ord.clear();
    
    for (int i=1; i<N; i++){
        adj[A[i]].push_back(B[i]);
        adj[B[i]].push_back(A[i]);
    }
    
    dfs(1,0);
    
    setHintLen (20);
    
    for (int i=1; i<=N; i++){
        for (int j=0; j<10; j++){
            if (prev[i] & (1<<j)){
                setHint(i,j+1,1);
            }
        }
    }
    
    dfs_ord.push_back(0);
    
    for (int i=0; i<N; i++){
        int node = dfs_ord[i];    
        
        int nxt = dfs_ord[i+1];
        
        for (int j=0; j<10; j++){
            if (nxt & (1<<j)){
                setHint(node,j+11,1);
            }
        }        
    }
}

void speedrun(int subtask, int N, int start){
    
    while (start!=1){
        
        int parent=0;
        
        for (int j=0; j<10; j++){
            if (getHint(j+1)){
                parent += (1<<j);
            }
        }  
        start=parent;
        goTo(parent);
    }
    
    vector <int> ls;
    ls.push_back(1);
    
    while (ls.size()){
        
        int nxt=0;
        
        for (int j=0; j<10; j++){
            if (getHint(j+11)){
                nxt += (1<<j);
            }
        }  
        
        if (nxt==0){return;}
        
        if (!goTo(nxt)){
            ls.pop_back();
            if (ls.size()){
                goTo(ls[ls.size()-1]);
            }
            else{return;}
        }
        
        else{ls.push_back(nxt);}
    }
    
    return;
}

Compilation message (stderr)

speedrun.cpp: In function 'void dfs(int, int)':
speedrun.cpp:12:5: error: reference to 'prev' is ambiguous
   12 |     prev[node]=parent;
      |     ^~~~
In file included from /usr/include/c++/13/bits/stl_algobase.h:66,
                 from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from speedrun.cpp:1:
/usr/include/c++/13/bits/stl_iterator_base_funcs.h:244:5: note: candidates are: 'template<class _BidirectionalIterator> constexpr _BidirectionalIterator std::prev(_BidirectionalIterator, typename iterator_traits<_Iter>::difference_type)'
  244 |     prev(_BidirectionalIterator __x, typename
      |     ^~~~
speedrun.cpp:7:14: note:                 'std::vector<int> prev'
    7 | vector <int> prev;
      |              ^~~~
speedrun.cpp: In function 'void assignHints(int, int, int*, int*)':
speedrun.cpp:25:5: error: reference to 'prev' is ambiguous
   25 |     prev.assign(1005, 0);
      |     ^~~~
/usr/include/c++/13/bits/stl_iterator_base_funcs.h:244:5: note: candidates are: 'template<class _BidirectionalIterator> constexpr _BidirectionalIterator std::prev(_BidirectionalIterator, typename iterator_traits<_Iter>::difference_type)'
  244 |     prev(_BidirectionalIterator __x, typename
      |     ^~~~
speedrun.cpp:7:14: note:                 'std::vector<int> prev'
    7 | vector <int> prev;
      |              ^~~~
speedrun.cpp:39:17: error: reference to 'prev' is ambiguous
   39 |             if (prev[i] & (1<<j)){
      |                 ^~~~
/usr/include/c++/13/bits/stl_iterator_base_funcs.h:244:5: note: candidates are: 'template<class _BidirectionalIterator> constexpr _BidirectionalIterator std::prev(_BidirectionalIterator, typename iterator_traits<_Iter>::difference_type)'
  244 |     prev(_BidirectionalIterator __x, typename
      |     ^~~~
speedrun.cpp:7:14: note:                 'std::vector<int> prev'
    7 | vector <int> prev;
      |              ^~~~