QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#8729. 間抜けたち

Statistics

二人の間抜けが通りを歩いている……

一人目の間抜け:「すごくいい問題を思いついたんだ。有向非巡回グラフ、つまり DAG があって……各辺に重み $0$ か $1$ を割り当てるんだ。どの二つの頂点についても、それらを結ぶパスの重みが、どのパスを選ぶかによらないようにね……」

二人目の間抜け:「うーん……でも、ある二つの頂点の間にパスがなかったら?」

一人目の間抜け:「ああ、そうだね。パスが複数あるとき、それらの重みが全部同じになるんだ。とにかく、そういう重みの割り当て方の数を求める問題だよ。」

二人目の間抜け:「うん、いい問題だね……」

幸運にも、そのとき二人は間抜けではない友人に出会った。

間抜けではない友人:「君たちにはきっと解けないよ。つまり、つついているだけだね。でも僕なら、もう少し簡単な問題は解ける。頂点間の距離がパスの選び方によらないとは要求できないけれど、距離を $2$ で割った余りがよらない、という条件なら要求できるんだ……」

一人目と二人目の間抜け:「orz」

ここからは形式的に説明する。頂点数 $N$、辺数 $M$ の有向グラフが与えられる。頂点には $1$ から $N$ までの番号が付けられ、すべての有向辺 $(u,v)$ について $u < v$ が成り立つ。各辺に値 $0$ または $1$ を割り当てることを辺の彩色と呼ぶ。辺 $(u,v)$ の値を $w(u,v)$ と表す。

頂点 $u$ から頂点 $v$ へのパスとは、$a_1 = u$、$a_k = v$ を満たす頂点列 $(a_1,\ldots,a_k)$ のことである。また、$1$ から $k-1$ までのすべての $i$ について、辺 $(a_i,a_{i+1})$ が存在しなければならない。パスの重みは、その上にあるすべての辺の重みの和、つまり $w(a_1,a_2)+\ldots+w(a_{k-1},a_k)$ である。

彩色 $w$ がよい彩色であるとは、すべての頂点対 $(u,v)$ と、それらを結ぶ任意の二つのパスについて、二つのパスの重みを $2$ で割った余りが等しいことである。

よい彩色の数は大きくなることがあるので、その数を $10^9+7$ で割った余りを出力せよ。

入力

最初の行に自然数 $N$、$M$ が与えられる。

続く $M$ 行には、グラフの辺を表す互いに異なる数の組 $u$、$v$ ($1 \le u < v \le N$) が与えられる。

出力

よい彩色の数を $10^9+7$ で割った余りを一行に出力せよ。

小課題

すべての小課題で $1 \le N \le 400$、$0 \le M \le 400$ が成り立つ。

小課題 配点 制約
1 21 $N \le 6$
2 20 $N \le 13$
3 37 $N, M \le 50$
4 22 追加の制約はない。

入出力例

入力 1

4 4
1 2
2 3
3 4
1 4

出力 1

8

入力 2

4 4
1 3
1 4
2 3
2 4

出力 2

16

注記

最初の入出力例の説明:

パス $1 \to 2 \to 3 \to 4$ と $1 \to 4$ の重みを $2$ で割った余りは等しくなければならない。辺 $(1,4)$ に重み $0$ を割り当てる場合、残りの辺のうち重み $1$ の辺の数が偶数でなければならず、4 通りの組み合わせがある。一方、辺 $(1,4)$ に重み $1$ を割り当てる場合、残りの辺のうち重み $1$ の辺の数が奇数でなければならず、この場合も 4 通りの組み合わせがある。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.