atcoder#ABC244F. [ABC244F] Shortest Good Path

[ABC244F] Shortest Good Path

题目描述

N N 個の頂点と M M 本の辺からなる単純(自己ループおよび多重辺を持たない)かつ連結な無向グラフが与えられます。
i = 1, 2, , M i\ =\ 1,\ 2,\ \ldots,\ M について、i i 番目の辺は頂点 ui u_i と頂点 vi v_i を結びます。

下記の 2 2 つの条件をともに満たす整数列 (A1, A2, , Ak) (A_1,\ A_2,\ \ldots,\ A_k) を長さ k k パスと呼びます。

  • すべての i = 1, 2, , k i\ =\ 1,\ 2,\ \dots,\ k について、1  Ai  N 1\ \leq\ A_i\ \leq\ N
  • すべての i = 1, 2, , k1 i\ =\ 1,\ 2,\ \ldots,\ k-1 について、頂点 Ai A_i と頂点 Ai+1 A_{i+1} は辺で直接結ばれている。

空列も長さ 0 0 のパスとみなします。

S = s1s2 sN S\ =\ s_1s_2\ldots\ s_N 0 0 1 1 のみからなる長さ N N の文字列とします。 パス A = (A1, A2, , Ak) A\ =\ (A_1,\ A_2,\ \ldots,\ A_k) が下記を満たすとき、パス A A S S に関する良いパスと呼びます。

  • すべての i = 1, 2, , N i\ =\ 1,\ 2,\ \ldots,\ N について、次を満たす。
    • si = 0 s_i\ =\ 0 ならば、A A に含まれる i i の個数は偶数である。
    • si = 1 s_i\ =\ 1 ならば、A A に含まれる i i の個数は奇数である。

S S として考えられる文字列(すなわち、0 0 1 1 のみからなる長さ N N の文字列)は 2N 2^N 個ありますが、そのすべてにわたる「 S S に関する良いパスのうち最短のものの長さ」の総和を出力してください。

この問題の制約下において、0 0 1 1 からなる長さ N N のどのような文字列を S S として選んでも、S S に関する良いパスが少なくとも 1 1 つ存在することが示せます。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M u1 u_1 v1 v_1 u2 u_2 v2 v_2 \vdots uM u_M vM v_M

输出格式

答えを出力せよ。

题目大意

给你一个简单连接的无向图,它有 NN 个顶点和 MM 条边。(如果一个图没有多条边,也没有自循环,那么这个图就是简单的)。 对于 i=1,2,,Mi = 1, 2, \ldots, M,第 ii 条边连接顶点 uiu_i 和顶点 viv_i

如果同时满足以下两个条件,则称序列 (A1,A2,,Ak)(A_1, A_2, \ldots, A_k) 为长度为 kk路径

  • 对于所有 i=1,2,,ki = 1, 2, \dots, k,成立 1AiN1 \leq A_i \leq N
  • 对于所有的 i=1,2,,k1i = 1, 2, \ldots, k-1,顶点 AiA_i 和顶点 Ai+1A_{i+1} 由一条边直接相连。

空序列被视为长度为 00 的路径。

S=s1,s2,,sNS = s_1,s_2,\ldots ,s_N 是由 0011 组成的长度为 NN 的字符串。如果满足以下条件,则称路径 A=(A1,A2,,Ak)A = (A_1, A_2, \ldots, A_k) 为关于 SS好路径

  • 对于所有 i=1,2,,Ni = 1, 2, \ldots, N,成立:
    • si=0s_i = 0,则AA有偶数个 ii
    • si=1s_i = 1,则AA有奇数个 ii

可能的 SS2N2^N 个(换句话说,由 0011 组成的长度为 NN 的字符串有 2N2^N 个)。求所有这些 SS 中"关于 SS 的最短好路径的长度"之和。

在这个问题的约束条件下,可以证明对于任何由 0011 组成的长度为 NN 的字符串 SS,至少有一条关于 SS 的好路径。

3 2
1 2
2 3
14
5 5
4 2
2 3
1 3
2 1
1 5
108

提示

制約

  • 2  N  17 2\ \leq\ N\ \leq\ 17
  • N1  M  N(N1)2 N-1\ \leq\ M\ \leq\ \frac{N(N-1)}{2}
  • 1  ui, vi  N 1\ \leq\ u_i,\ v_i\ \leq\ N
  • 与えられるグラフは単純かつ連結
  • 入力はすべて整数

Sample Explanation 1

- S = 000 S\ =\ 000 のとき、空列 () () S S に関する最短の良いパスであり、その長さは 0 0 です。 - S = 100 S\ =\ 100 のとき、(1) (1) S S に関する最短の良いパスであり、その長さは 1 1 です。 - S = 010 S\ =\ 010 のとき、(2) (2) S S に関する最短の良いパスであり、その長さは 1 1 です。 - S = 110 S\ =\ 110 のとき、(1, 2) (1,\ 2) S S に関する最短の良いパスであり、その長さは 2 2 です。 - S = 001 S\ =\ 001 のとき、(3) (3) S S に関する最短の良いパスであり、その長さは 1 1 です。 - S = 101 S\ =\ 101 のとき、(1, 2, 3, 2) (1,\ 2,\ 3,\ 2) S S に関する最短の良いパスであり、その長さは 4 4 です。 - S = 011 S\ =\ 011 のとき、(2, 3) (2,\ 3) S S に関する最短の良いパスであり、その長さは 2 2 です。 - S = 111 S\ =\ 111 のとき、(1, 2, 3) (1,\ 2,\ 3) S S に関する最短の良いパスであり、その長さは 3 3 です。 よって、求める答えは $ 0\ +\ 1\ +\ 1\ +\ 2\ +\ 1\ +\ 4\ +\ 2\ +\ 3\ =\ 14 $ です。