No.2910 単体ホモロジー入門
タグ : / 解いたユーザー数 47
作問者 : 👑 p-adic / テスター : Taka
問題文
入力に正整数 $N$ と非負整数 $M$ と、$N$ 未満の各非負整数を頂点とする(自己ループや多重辺を持たない)$N$ 頂点 $M$ 辺の無向グラフ $G$ と、$3$ 個の $N$ 未満の非負整数 $v_0, v_1, v_2$ が与えられます。
$G$ の閉路であってそれが通る頂点全体の集合が $\{v_0, v_1, v_2\}$ と一致しないものが存在するか否かを判定してください。
ただしここで $G$ の閉路とは、大雑把には $G$ の辺を辿って頂点を移動する経路であって、始端と終端のみが等しく、それ以外は全ての異なる点を通るもののことです。
閉路の厳密な定義が知りたい人向けの説明はこちらです。(クリックで開く)
$G$ の閉路とは、$G$ の辺からなる長さ $1$ 以上の有限列 $e$ であって、その長さを $\ell$ と置き $\ell$ 未満の各非負整数 $j$ に対し $e$ の $1+j$ 個目の成分を $e_j$ と置いた時に以下の $2$ 条件を満たすもののことです:
- $0 \leq j_0 < j_1 < \ell$ を満たす任意の整数 $j_0,j_1$ に対し、$e_{j_0} \neq e_{j_1}$ である。
- $G$ の頂点からなる長さ $\ell + 1$ の列 $c$ であって、$\ell$ 以下の各非負整数 $i$ に対し $c$ の $1+i$ 個目の成分を $c_i$ と置いた時に以下の $2$ 条件を満たすものが存在する:
- $0 \leq j < \ell$ を満たす任意の整数 $j$ に対し、$e_j$ は $c_j$と $c_{j+1}$ を結ぶ $G$ の辺である。
- $0 \leq i_0 < i_1 \leq \ell$ を満たす任意の整数 $i_0,i_1$ に対し、$(i_0,i_1) = (0,\ell)$ と $c_{i_0} = c_{i_1}$ は同値である。
また上の記法において $e$ が通る頂点とは $G$ の頂点 $v$ であって $v$ が $e_j$ の端点であるような $\ell$ 未満の非負整数 $j$ が存在するもののことです。
背景
単体複体と呼ばれる幾何的データには単体ホモロジーという次数付きの不変量が定義されます。単体ホモロジーは各次数ごとに可換群と呼ばれる代数構造などが付与されたデータで、各非負整数 $d$ に対し $d$ 次のデータは $d$ 次単体ホモロジー群と呼ばれます。
この問題は $G$ から構成される $1$ 次元単体複体に $\{v_0,v_1,v_2\}$ に対応する面を貼り付けて得られる $2$ 次元単体複体の $1$ 次単体ホモロジー群が自明群であるという性質を満たすか否かを判定する問題と密接に関わります。ただし $1$ 次単体ホモロジー群を計算する問題では $\{v_0,v_1,v_2\}$ の部分集合 $\{v_0,v_1\}, \{v_0,v_2\}, \{v_1,v_2\}$ に対応する辺たちが全て $G$ の辺である必要がありますが、この問題自体にはそのような制約が必要ないので課していません。
入力
$G$ の辺を $M$ 未満の各非負整数 $m$ で番号付けて辺 $m$ と呼びます。$M$ 未満の各非負整数 $m$ に対し、辺 $m$ の端点を $i_m$ と $j_m$ ($i_m,j_m$ は$i_m < j_m$ を満たす $N$ 未満の非負整数)と置きます。
この時、入力は以下の形式で標準入力から $2 + M$ 行で与えられます:
- $1$ 行目に $N, M$ が半角空白区切りで与えられます。
- $M$ 未満の各非負整数 $m$ に対し、$2 + m$ 行目に $i_m, j_m$ が半角空白区切りで与えられます。
- $2 + M$ 行目に $v_0, v_1, v_2$ が半角空白区切りで与えられます。
$N$ $M$ $i_0$ $j_0$ $\vdots$ $i_{M-1}$ $j_{M-1}$ $v_0$ $v_1$ $v_2$
制約
入力は以下の制約を満たします:
- $N$ は $1 \leq N \leq 4$ を満たす整数である。
- $M$ は $0 \leq M \leq \frac{1}{2}N(N-1)$ を満たす整数である。
- $M$ 未満の任意の非負整数 $m$ に対し、$i_m$ と $j_m$ は $0 \leq i_m < j_m < N$ を満たす整数である。
- $M$ 未満の任意の非負整数 $m_0,m_1$ に対し、$m_0 \neq m_1$ ならば $(i_{m_0},j_{m_0}) \neq (i_{m_1},j_{m_1})$ である。
- $v_0$ は $0 \leq v_0 < N$ を満たす整数である。
- $v_1$ は $0 \leq v_1 < N$ を満たす整数である。
- $v_2$ は $0 \leq v_2 < N$ を満たす整数である。
出力
$G$ の閉路であってそれが通る頂点全体の集合が $\{v_0, v_1, v_2\}$ と一致しないものが存在する場合はYes
と、存在しない場合はNo
と出力してください。
最後に改行してください。
サンプル
サンプル1
入力
3 3 0 1 0 2 1 2 0 0 0
このように $v_0, v_1, v_2$ が 重複することもあります。
出力
Yes
「辺 $0$、辺 $2$、辺 $1$」と辿る経路は閉路をなし、それが通る頂点全体の集合は $\{0,1,2\}$ であって $\{v_0,v_1,v_2\} = \{0,0,0\} = \{0\}$ とは一致しません。
サンプル2
入力
3 3 0 1 0 2 1 2 2 0 1
このように $v_0, v_1, v_2$ が 昇順でないこともあります。
出力
No
「辺 $0$、辺 $2$、辺 $1$」と辿る経路は閉路をなしますが、それが通る頂点全体の集合 $\{0,1,2\}$ は $\{v_0,v_1,v_2\} = \{2,0,1\}$ と一致してしまいます。他の閉路も同様です。
サンプル3
入力
4 4 0 1 0 3 1 2 2 3 0 1 2
このように $\{v_0, v_1, v_2\}$ の部分集合 $\{v_0,v_1\}, \{v_0,v_2\}, \{v_1,v_2\}$ に対応する辺たちを $G$ が持たないこともあります。今回は $\{v_0,v_2\} = \{0,2\}$ に対応する辺が $G$ にはありません。
出力
Yes
「辺 $0$、辺 $2$、辺 $3$、辺 $1$」と辿る経路は閉路をなし、それが通る頂点全体の集合は $\{0,1,2,3\}$ であって $\{v_0,v_1,v_2\} = \{0,1,2\}$ とは一致しません。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。