QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100

#14327. 三次元埋め込み

Statistics

グラフの空間への埋め込みとは、各頂点を空間内の異なる点に置き、各辺を両端の頂点を結ぶ単純な曲線として描くことで、共通の頂点以外では 2 つの曲線が交わらないようにすることである。この問題では、一定の条件を満たす三次元空間への埋め込みを考える。

$n$ 頂点 $m$ 辺の単純無向グラフが与えられる。これは、任意の 2 頂点を結ぶ辺が高々 1 本であり、各辺は異なる頂点を結ぶという意味である。頂点には $1$ から $n$、辺には $1$ から $m$ の番号が付いている。辺 $j$ は異なる頂点 $v_j$ と $w_j$ を結ぶ。各頂点に接続する辺は高々 5 本である。

次の条件をすべて満たすグラフの埋め込みを求めよ。

  • 各頂点 $i$ は空間内の点 $(x_i,y_i,0)$ に埋め込む。座標 $x_i,y_i$ は $0$ 以上 $400$ 以下の整数でなければならない。すべての点は異なる座標を持たなければならない。

  • 各辺 $j$ は、頂点 $v_j,w_j$ の埋め込み点を両端とする折れ線(連結した線分の列)として埋め込む。各線分は $x$ 軸、$y$ 軸、$z$ 軸のいずれかに平行でなければならない。折れ線の各節点の座標は $0$ 以上 $400$ 以下の整数でなければならない。各折れ線は両端を含め、高々 $30$ 個の節点を持つ。

  • 折れ線は自己交差してはならない。異なる折れ線は、同じ頂点に接続する辺に対応する場合を除き、どの点も共有してはならない。その場合でも、その 1 つの端点だけを共有してよい。

入力

入力の最初の行には 2 つの整数 $n,m$ が与えられる($2\le n\le1600$、$1\le m\le4000$)。続く $m$ 行のうち $j$ 行目には 2 つの整数 $v_j,w_j$ が与えられる($1\le v_j<w_j\le n$)。

各頂点に接続する辺が高々 5 本であることが保証される。さらに多重辺はない。すなわち $j\ne j^{\prime}$ ならば $(v_j,w_j)\ne(v_{j^{\prime}},w_{j^{\prime}})$ である。

出力

まず $n$ 行を出力せよ。その $i$ 行目には頂点 $i$ を埋め込む位置を表す 2 つの整数 $x_i,y_i$ を出力せよ。続いて $m$ 行を出力せよ。その $j$ 行目は辺 $j$ に対応する折れ線を次の形式で表す。

$$k\ x^{\prime}_1\ y^{\prime}_1\ z^{\prime}_1\ \cdots\ x^{\prime}_k\ y^{\prime}_k\ z^{\prime}_k$$

ここで $k$ は節点数であり、$2$ 以上 $30$ 以下でなければならない。点 $(x^{\prime}_1,y^{\prime}_1,z^{\prime}_1),\ldots,(x^{\prime}_k,y^{\prime}_k,z^{\prime}_k)$ は折れ線の節点である。最初の点 $(x^{\prime}_1,y^{\prime}_1,z^{\prime}_1)$ は $(x_{v_j},y_{v_j},0)$、最後の点 $(x^{\prime}_k,y^{\prime}_k,z^{\prime}_k)$ は $(x_{w_j},y_{w_j},0)$ でなければならない。連続する各点を線分で結んで折れ線を作る。各線分の長さは正でなければならない。連続する 2 本の線分は同じ方向でもよく、例えば両方が $x$ 軸に平行でもよい。

出力する埋め込みは、上記のすべての条件を満たさなければならない。

与えられた入力制約のもとでは、少なくとも 1 つの有効な出力が存在することが示せる。複数の出力が存在する場合、そのどれも正解として認められる。

注記

特殊判定に関する注記:

ローカルでのテスト用のコマンドラインツールが提供される。DOMjudge からファイルをダウンロードできる。ツールの先頭に使い方を説明するコメントがある。

入出力例

入力 1

3 3
1 2
1 3
2 3

出力 1

0 0
400 0
0 399
3 0 0 0 100 0 0 400 0 0
4 0 0 0 0 0 200 0 399 200 0 399 0
3 400 0 0 400 399 0 0 399 0

注記

入出力例 1 の説明

図 B.1 は出力例で表される埋め込みを示す。

problem_14327_ff3a6b5009066c45d519415ba83d83d8.png

図 B.1:埋め込みの図。

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.