Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Image Slide ( Animal Companion in Maze )

147 views

Published on

icpc

Published in: Education
  • Be the first to comment

  • Be the first to like this

Image Slide ( Animal Companion in Maze )

  1. 1. Input 14 16 1 3 2 2 3 2 3 4 2 3 5 1 4 6 1 5 6 2 5 8 2 7 6 1 7 10 2 8 9 2 8 11 1 9 12 1 10 9 1 10 12 1 12 13 2 12 14 2 2 1 3 4 5 8 11 6 9 7 10 12 13 14
  2. 2. 単方向のエッジを削除した とき、グラフが森になって いるかどうかを判定します。
  3. 3. 双方向のエッジでつながれた ノードどうしを併合したとき、 グラフがDAGになっているか どうかを判定します。 これで”Infinite”を出力するか どうかの判定が終了するの であとは最長のパスを見つ けることだけを考えます。
  4. 4. 説明のため、グループA,B,C,D,Eと名前を 付けます。 dp[ i ] = 適当なノードから始まり、i 番目 のノードで終了しているパスの中で最長 の長さ というふうに、DP配列を用意します。 グループAとBは単方向のエッジが入って きていないため(入次数が0であるため) 木の直径を求めることで簡単に DP配列を埋めることができます。 グループA グループB グループE グループD グループC
  5. 5. グループAとBは単方向のエッジが入って きていないため(入次数が0であるため) 木の直径を求めることで簡単に DP配列を埋めることができます。 グループA グループB グループE グループD グループC
  6. 6. 2 1 2 1 1 2 グループA グループB グループE グループD グループC
  7. 7. 2 1 2 1 1 2 グループA グループB グループE グループD グループC トポロジカル順序で見ていくので、次はグルー プCのDP配列を埋めていくことになります。 グループCは、4本のエッジが入ってきている ので、ノードとエッジを新たに4つ追加します。
  8. 8. 2 1 2 1 1 2 グループA グループB グループE グループD グループC グループCは、4本のエッジが入ってきている ので、ノードとエッジを新たに4つ追加します。
  9. 9. 2 1 2 1 1 2 グループA グループB グループE グループD グループC グループCは、4本のエッジが入ってきている ので、ノードとエッジを新たに4つ追加します。
  10. 10. 2 1 2 1 1 2 グループA グループB グループE グループD グループC グループCは、4本のエッジが入ってきている ので、ノードとエッジを新たに4つ追加します。 2 3 2 2 1 1 1
  11. 11. 2 1 2 1 1 2 グループA グループB グループE グループD グループC 2 3 2 2 1 1 1 新しく追加されたエッジの重みは、 dpの値が1増えたものになります。 もともとあったエッジの重みは1とし ます。
  12. 12. 2 1 2 1 1 2 グループA グループB グループE グループD グループC 2 3 2 2 1 1 1 先ほどと同じようにグループCについて 木の直径を求めて、DP配列を埋めます。
  13. 13. 2 1 2 4 5 1 5 6 1 2 グループA グループB グループE グループD グループC 8 6 7 8 2 3 2 2 1 1 1 先ほどと同じようにグループCについて 木の直径を求めて、DP配列を埋めます。
  14. 14. 2 1 2 4 5 1 5 6 1 2 グループA グループB グループE グループD グループC 新しく追加したノードとエッジを削除します。
  15. 15. 2 1 2 4 5 1 5 6 1 2 グループA グループB グループE グループD グループC 新しく追加したノードとエッジを削除します。
  16. 16. 2 1 2 4 5 1 5 6 1 2 グループA グループB グループE グループD グループC 新しく追加したノードとエッジを削除します。 これでグループCのノードのDP配列が埋め終 わりました。 残ったグループDとEも同様です。
  17. 17. 2 1 2 4 5 1 5 6 1 6 7 8 8 2 グループA グループB グループE グループD グループC 新しく追加したノードとエッジを削除します。 これでグループCのノードのDP配列が埋め終 わりました。 残ったグループDとEも同様です。
  18. 18. 2 1 2 4 5 1 5 6 1 6 7 8 8 2 グループA グループB グループE グループD グループC 最終的な答えは、DP配列の要素の中で最大 のもの、つまり8となります。

×