タイトル
トラベル(データ拡張バージョン)
https://www.luogu.org/problem/P5049
問題の意味
質問の意味は、それがグラフ上で現在のレコードのサイズは、すでにポイントを通過することはできませんノードながら実行されている、しかし、戻って最終的な出力辞書順最小の数列を追跡することができ、非常に簡単です。
分析
-
M = N - 1
このような状況を言うまでもなく、上に直接走ったDFS D F ラインでS!
-
M = N
リングが、これは数字が起こるようになりますことを非常に明確にする必要があります。
ことは、どのようにそれを解決するには?あなたがリングのこの半分に行ったと思いました、続いバックあなたはこのリングを介して得た出発点に、他の半分、DFS D F ラインでS。
試料についての2 例2の:
もちろん2--3--4--5は、図のリングです。
始まり開始ノード、そして3は、このリングの初めに私たちの最初の時間です。
その後、我々はしなければならない2 後に戻って出発点にし、Go、3 、3 、再び4 行き、そして最後に、我々は、特別な治療リングを必要としないため、ライン上のマップ全体を終了します。
このプロセスは、十分に、我々は今ことを知っていると理解されるべきであるM = N M = nは環上のみの処理ポイント、または他の点など- M = Nを- として1。D F. S十分に、リング上の場合(上記バックした後に2背面3)、プロセスの残りの部分は、特別な処理を必要としません。
だから、鍵は今、リング上の特別な処理を解決することです。
我々は3つのケースに分けられ、リング上でのポイントを置きます:
以下に示すように、最小のすべての側面にアクセス可能ではない環上の点の数である側であるA、。
1 。後1つの始動2は達し、その後、3から3 出発の三辺のうちアクセス有する4 、6 、7、最小4が環上の点であるが、しかしまた。
以下に示すように、第2の、ポイント数である側は、すべての辺にアクセスできない環は、最大でも最小ではありません。
このとき、6つの環上のポイントではなく、最大でも最小エッジ。
それは、図のすべてにアクセスできないように、そのポイントは、最大のリングの両側に数となっている第三の側面。
この場合、図7は、環の側に最大である点です。
最初のケースでは(下記参照)。
由于我们现在在3这个节点,如果我们回溯的话,6和7就永远也到不了了,所以在回溯之前要先把6和7走完,相比6和7,走4显然会更优。
所以第一种情况不需要回溯,继续在环上走就行了。
对于第二种情况(见下图):
同样还是在3节点,这次显然我们要先走4,但是走完4还是得走6节点,同样也不需要回溯。
对于第三种情况(见下图):
这时候很明显是要回溯的了。
需要注意的是回溯之前要先把44和66先走了再回溯(原因上面刚讲过了)。
但是,如果我们换张图,还需要回溯吗?(见下下图)
这张图中,我们假设当前还是在3节点,6是其出边中最大且在环上的点。
这时候需不需要回溯呢?很显然不需要
因为回溯之后回到了2,2继续走的话是走到了7,显然走6比起7更优。
总结一下,我们在环上走的时候,只有当其出边中,为环上的那个点编号最大,且比回溯后第一个走的点还大,这时候才回溯,其他时候就正常跑DFS。
Iの上従ってコードフラグタグを用いて、バックアップする必要があるかどうかのT M と比較して後でバックトラックするかどうかを決定するために、リング上のエッジよりも大きい最初のノード現在のノードPレコードのノード。