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

Автор alamin_2014, история, 7 лет назад, По-английски

simple dfs code.... why is it not working? please help input : 6 1 1 6 1 2 2 3 2 5 3 4 4 5 code : http://pastebin.com/EazYw5af my code run properly when I remove printf which is out of for loop in dfs function. If I write printf function... it does not work... strange..

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

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Because It's underfined behaviour. printf("%d %d\n",x,visited[G[x][k]]); At this line, k = G[x].size() because of end of loop.

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    It is not working when prinf is inside the loop outside the if statement. for(k=0; k<G[x].size(); k++) { if(visited[G[x][k]]==0) { visited[G[x][k]]=1;

    int v=G[x][k];
            //  cout<<v<<endl;
            dfs(v);
        }
    
        printf("%d %d\n",x,visited[G[x][k]]);
    }
    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Make 'k' not global. Also don't use global variables at all.

      • »
        »
        »
        »
        7 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +13 Проголосовать: не нравится

        In real world programming using global variables is bad. But in competitive programming it usually improves working time of the solution and can be crucial. So I am not sure, if "don't use global variables at all" is good advice for competitive programming.