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

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

I submitted a solution for the problem: E. Bertown roads My submission is: 289121858

ideone Link of the same submission: https://ideone.com/Pn4Wdh

The checker comment I got is:

wrong output format Unexpected end of file — int32 expected

Input:

6 8
1 2
2 3
1 3
4 5
4 6
5 6
2 4
3 5

Participant's output:

1 2
1 3

Jury's Answer:

6 4
4 5
5 6
5 3
3 2
2 1
1 3
2 4

But if I run the same code with same input on online compilers and my machine, it produces correct output (N lines). You can check the ideone link I provided, even this one producing the correct output!

I even tried changing the code and replaced the map with set. Here is that submission: 289122463

But the same issue occurs. My code produces only two lines on codeforces but N lines on other compilers.

What am I missing?

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

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

You have to initialize the Arrays first. Change your code to this

Graph::Graph(int n) {
    V = n + 1;
    adj = new list<int>[V];
    visited = new bool[V]();
    tin = new int[V]();
    low = new int[V]();
}

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

    But your way of initializing is doing nothing on the map or set, right?

    Also if my way of initializing was wrong, other compiler wouldn't have worked, right? And I used the same syntax in other problems on codeforces, and it worked.

    for example this submission: 285438974

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

      Someone correct me if I'm wrong ,but you're just getting unexpected behavior if you don't initialize an array, so maybe you got lucky or the test cases didn't really exploit that. Also sets and maps don't require initialization beyond just declaring them.

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

        It's worth noting codeforces compiles your code with the -O2 flag, so it's not surprising for undefined behaviour to yield different results on codeforces than multiple other test environments which don't use it. Best to avoid undefined behaviour in general rather than hoping the compiler will do what you need

»
3 недели назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
if (!visited[v]) {
      dfs(v, node); ....

You have not initialized the visited array.

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

Thanks a ton, everyone to point that out. The thing is I didn't realize

visited = new bool[V]; this line doesn't initialize the array. What I had in my mind is that — since it is in a global class, it must be initialized anyway even if I don't do it myself.

Now that you pointed that out, I just memset() the visited array with false value intially, and I got AC.

Thanks again. Guys like you are there, that's why guys like me can learn to pay attention to tiniest details :D