No.2286 Join Hands
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 33
作問者 : みここ / テスター : cureskol sapphire__15 👑 potato167
タグ : / 解いたユーザー数 33
作問者 : みここ / テスター : cureskol sapphire__15 👑 potato167
問題文最終更新日: 2023-04-28 08:19:39
問題文
$N$ 人の幼児がいて、各幼児には手が二つずつあります。
あなたは以下の手順を $N$ 回繰り返すことによってすべての幼児の手を繋がせます。
- まだ繋いでいない手がある幼児を二人選ぶ。
- 選んだ二人の幼児の繋いでいない方の手(両手とも繋いでいなければどちらでも)を繋がせる。
最終的に自分自身と手を繋いでいる幼児はいないことに注意してください。
さて、$M$ 組のペアからなる幼児の仲良しリストが存在します。リストの $i$ 番目のペアは $(u_i, v_i)$ です。$(u, v)$ または $(v, u)$ がリストに存在するとき、$u$ 番目の幼児と $v$ 番目の幼児は仲良しです。そうでないとき、$u$ 番目の幼児と $v$ 番目の幼児は仲良しではありません。
幼児は両方の手が仲良しの相手と繋がれているときうれしくなり、両方の手が仲良しでない相手と繋がれているとき悲しくなります。片方の手のみが仲良しの相手と繋がれているときはうれしくも悲しくもありません。
全ての手の繋ぎ方の中で $(\text{うれしい幼児の数})-(\text{悲しい幼児の数})$ が最大となるときの値を求めてください。
入力
$N \ M$ $u_1 \ v_1$ $\vdots$ $u_M \ v_M$
- 入力される値はすべて整数
- $2 \le N \le 5000$
- $0 \le M \le 5000$
- $1 \le u_i < v_i \le N$
- $i \neq j$ ならば $(u_i, v_i) \neq (u_j, v_j)$
出力
答えを出力してください。最後に改行してください。
サンプル
サンプル1
入力
6 3 1 2 1 3 4 5
出力
2
以下の順で手を繋がせることで、うれしい幼児の数を $3$、悲しい幼児の数を $1$ にできます。
- $1$ と $2$ の手を繋がせる。
- $1$ と $3$ の手を繋がせる。
- $2$ と $6$ の手を繋がせる。
- $3$ と $6$ の手を繋がせる。
- $4$ と $5$ の手を繋がせる。
- $4$ と $5$ の手を繋がせる。
うれしい幼児の数を悲しい幼児の数より $3$ 以上大きくすることはできないので、答えは $2$ となります。
サンプル2
入力
3 1 1 2
出力
-1
自分自身と手を繋いでいる幼児は存在できないことに注意してください。
サンプル3
入力
3 0
出力
-3
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。