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

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

Was solving this Cses problem from graph section.I came up with a dp approach for this but getting wrong answer on three testcases.Can anyone help me in where i am going wrong. Here is my submission

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

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

Flight discount is a template problem for this algorithm:

algorithm

I can't open Ideone links, could you use another method of sharing such as linking to your submission on cases or posting to Pastebin?

Given that the intended solution is the algorithm above, I'm not sure how you can solve it with a dp approach, but I am really interested to see your approach!

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

      Thanks a lot!

      Looking at your program, it seems like you have a 1d DP where you try to find the min cost between using the coupon at that node and not using the coupon at that node.

      One immediate problem I see is how you are managing the visited array. There may be multiple paths to any given airport, but you only allow yourself to visit an airport once. Therefore, your DP solution breaks because, at any given node, you do not know the shortest path to that node, nor the shortest path to the final node.

      There are a few other problems, but we can work on this one first.

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

Your dp fails at this case

0 1 100
1 2 10
2 3 1
3 4 1
4 2 1
1 4 1
3 5 1

do[4][0] will be 1e18 instead of 3. Your dp fails on cycles, such as the example I gave. You need to run Dijkstra's algorithm to solve this problem. CP algorithms has a very good tutorial on it.

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

    His code may be wrong, but the test case you gave is running perfectly fine.

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

      It's numbered from 0 to n-1, but the problem gives numbers from 1 to n. If you add 1 to every element, his code outputs 62, which is incorrect, since there's a path that costs 54. Here's the fixed test case:

      6 7
      1 2 100
      2 3 10
      3 4 1
      4 5 1
      5 3 1
      2 5 1
      4 6 1
      

      Here's an illustration fo the graph. You use the coupon on the edge from 1 to 2, then follow the path 1, 2, 5, 3, 4, 6.

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

My submission getting TLE on Test 18 can someone help me with my code where can I optimize this code submission

mySubmission