7

私がここで尋ねようとしている質問は、スタックオーバーフローの前にすでに尋ねられています。しかし、 Skiminokによって投稿された解決策を正しく理解することはできません。

これがリンクです。

上記のリンクに掲載されている2つのサンプルテストケースを使用して解決策を試しましたが、正しい答えを得ることができません。

テストケースの場合1::

N=3およびK=2

5 4 7

DAGは次のようになります::

サンプルテストケース1の有向非巡回グラフ

注:上記のDAGを作成しました。

piとpjを2つの異なる問題とします。次に、同じ日のpiの直後にpjを連続して解くことができる場合に限り、piからpjに有向エッジを描画します。つまり、次の条件を満たす必要があります。

i <jです。これは、それほど難しくない問題を早期に解決する必要があるためです。

| vi --vj | > = K(評価要件)。

次に、次のことを考慮して2部グラフを作成しました。

元のDAGの各有向エッジ(u、v)について、無向エッジ(au、bv)を2部グラフに追加する必要があります。ここで、{ai}と{bi}はサイズnの2つの部分です。

ここに画像の説明を入力してください

答え=上記の2部グラフでの最大カーディナリティマッチング。

上記の2部グラフでの最大カーディナリティマッチング=1(緑色のegde)

しかし、答えは2です。

同様にサンプルテストケース2:

5 1

5 3 4 5 6

ここに画像の説明を入力してください

ここに画像の説明を入力してください

上のグラフのMAxカーディナリティは複数ですが、正解は1です。

私はそれを正しく実装していないと思います、私がどこで間違いを犯しているのか教えてくださいまたは他の方法はありますか

ありがとう!

4

1 に答える 1

1

私は自分で答えを見つけました。翌日、この質問を投稿しました。

そして、私のソリューションはすべてのテストケースに合格しました。

私は最後のステップで間違いを犯していました。実際には、回答/ソリューションは、最大2部マッチングのエッジを含まないSETBの頂点の総数です。

サンプルテストケースの例1::

最大マッチングM={(1A、3B)}。

最大一致のエッジは2つの頂点(頂点1と頂点2)に入射しません。したがって、答えはそのような頂点の数に等しくなります=2。

テストケース2::

最大マッチングM={(1A、2B)、(2A、3B)、(3A、4B)、(4A、5B)}。

最大一致のエッジは1つの頂点(頂点1)に入射しません。したがって、答えは1に等しくなります。

于 2012-05-30T17:43:08.460 に答える