Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int MAX_CASES = 1000, INFINITE=1000*1000*1000;
- int values[MAX_CASES];
- int movesTo[MAX_CASES];
- int nbCases = 0;
- void pathfinder(int pos, int curMv)
- {
- if(pos < 0 || pos >= nbCases || curMv >= movesTo[pos] || values[pos] == -1)
- return;
- movesTo[pos] = curMv;
- pathfinder(pos-1,curMv+1);
- pathfinder(pos+1,curMv+1);
- pathfinder(values[pos],curMv+1);
- }
- int main(void)
- {
- cin >> nbCases;
- for(int pos=0; pos<nbCases; pos++)
- {
- movesTo[pos] = INFINITE;
- cin >> values[pos];
- }
- if(values[nbCases-1] == -1)
- cout << "-1\n";
- else
- {
- pathfinder(0,0);
- if(movesTo[nbCases-1] == INFINITE)
- cout << "-1\n";
- else
- cout << movesTo[nbCases-1] << "\n";
- }
- /*
- for(int pos=0; pos<nbCases; pos++)
- cout << movesTo[pos] << "\t";
- cout << "\n";
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment