#P15493. [ICPC 2025 APC] Three-Dimensional Embedding

[ICPC 2025 APC] Three-Dimensional Embedding

Description

An embedding of a graph in a space is a way of placing each vertex at a distinct point in that space and drawing each edge as a simple arc connecting its two vertices, so that no two arcs intersect except at a shared vertex. In this problem, we focus on embeddings in a three-dimensional space under certain conditions.

You are given a simple undirected graph with nn vertices and mm edges, which means there is at most one edge connecting any pair of vertices and each edge connects different vertices. The vertices are numbered from 11 to nn, and the edges are numbered from 11 to mm. Edge jj connects the two distinct vertices vjv_j and wjw_j. Each vertex is incident to at most five edges.

Find an embedding of the graph such that all of the following conditions are satisfied.

  • Each vertex ii is embedded as a point (xi,yi,0)(x_i, y_i, 0) in the space. The coordinates xix_i and yiy_i must be integers between 00 and 400400, inclusive. All points must have distinct coordinates.
  • Each edge jj is embedded as a polyline (a connected series of line segments) with the embedded points for vertices vjv_j and wjw_j as its endpoints. Each segment of the polyline must be parallel to the xx-, yy-, or zz-axis. Each node of the polyline must have integer coordinates between 00 and 400400, inclusive. Each polyline must have no more than 3030 nodes, counting its endpoints.
  • Polylines must not have self-intersections. Distinct polylines must not share any point, except when they correspond to edges incident to the same vertex. In that case, they may share only that single endpoint.

Input Format

The first line of input contains two integers nn and mm (2n16002 \leq n \leq 1600, 1m40001 \leq m \leq 4000). The jj-th of the following mm lines contains two integers vjv_j and wjw_j (1vj<wjn1 \leq v_j < w_j \leq n).

The input guarantees that each vertex is incident to at most five edges. Further, there are no parallel edges; that is, if jjj \neq j', (vj,wj)(vj,wj)(v_j, w_j) \neq (v_{j'}, w_{j'}) holds.

Output Format

First, output nn lines. The ii-th of these lines should contain two integers xix_i and yiy_i, representing the coordinates where vertex ii is embedded. Then, output mm lines, where the jj-th line represents the polyline corresponding to edge jj, using the following format:

$$k \ x'_1 \ y'_1 \ z'_1 \ \cdots \ x'_k \ y'_k \ z'_k$$

Here, kk is the number of nodes, which must be between 22 and 3030, inclusive. The points (x1,y1,z1),,(xk,yk,zk)(x'_1, y'_1, z'_1), \ldots, (x'_k, y'_k, z'_k) are the nodes of the polyline. The first point (x1,y1,z1)(x'_1, y'_1, z'_1) must be (xvj,yvj,0)(x_{v_j}, y_{v_j}, 0), and the last point (xk,yk,zk)(x'_k, y'_k, z'_k) must be (xwj,ywj,0)(x_{w_j}, y_{w_j}, 0). Each pair of consecutive points is connected by a segment to form the polyline. Each segment must have a positive length. Two consecutive segments may have the same orientation; for example, both can be parallel to the xx-axis.

The embedding that you output must satisfy all of the conditions mentioned above.

Under the given input constraints, it can be shown that there exists at least one valid output. If there are multiple outputs, any one of them will be accepted.

Notes on special judging:

You are provided with a command-line tool for local testing. You can download the file from DOMjudge. The tool has comments at the top to explain its use.

3 3
1 2
1 3
2 3
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

Hint

Explanation for the sample input/output #1

Figure B.1 illustrates the embedding represented by the sample output.

:::align{center} :::