P7380 [COCI 2018/2019 #6] Konj

题目描述

Domagoj 有一种奇特的绘画手法。首先他准备了 $N$ 条待画的线段,每条线段连接两个点,即 $(A_i,B_i)$ 和 $(C_i,D_i)$。接着,他选定一个点 $T$。然后,Domagoj 将画出所有符合下列条件之一的线段: - 经过点 $T$ - 与经过点 $T$ 的线段直接或间接相连 当两条线段 $L_1,L_2$ 有一个公共端点时,我们认为 $L_1,L_2$ 是直接相连的。当线段 $L_1$ 与 $H_1$,$H_1$ 与 $H_2$,$\cdots$,$H_k$ 与 $L_2$ 都是直接相连的,那么我们认为 $L_1,L_2$ 是间接相连的。 你的任务是打印出 Domagoj 最终画出的图像。输出的形式为一个矩阵 $P$。当有线段经过 $(a,b)$ 时,应在 $P(a,b)$ 的位置输出 `#`,否则输出 `.` 字符。注意横坐标 $a$ 从左到右依次增大,纵坐标 $b$ 从下到上依次增大(这与平面直角坐标系的系统保持一致)。矩阵 $P$ 不能有任何一列或一行都是 `.` 字符,即矩阵必须在包含所有要画出的线段的前提下,在大小上最小。

输入格式

第一行输入待画线段的个数 $N$。 接下来的 $N$ 行,每行输入四个非负整数 $A_i,B_i,C_i,D_i$,表示第 $i$ 条线段的端点 $(A_i,B_i)$ 和 $(C_i,D_i)$。对于每条线段,$A_i \neq C_i$ 和 $B_i \neq D_i$ 将且仅将成立其中一个,即任何一条线段都与坐标轴平行。同时,没有线段会相交,但可能会共用同一个端点。 接下来的一行(即最后一行),输入整数 $X,Y$,表示 $T$ 的坐标。保证至少有一条线段经过点 $T$。

输出格式

输出所求的矩阵 $P$。

说明/提示

#### 样例 1 解释 除了最后一条线段,其它的都需要画出。即除了连接 $(42,42)$ 和 $(42,43)$ 的线段之外,其它都必须画出。 #### 样例 2 解释 所有线段都必须画出。 #### 数据规模与约定 对于 $30\%$ 的数据,需要画出所有线段。 对于 $100\%$ 的数据,$1 \le N \le 2 \times 10^5$,$0 \le A_i,B_i,C_i,D_i \le 300$。 #### 说明 **本题分值按 COCI 原题设置,满分 $70$。** **题目译自 [COCI2018-2019](https://hsin.hr/coci/archive/2018_2019/) [CONTEST #6](https://hsin.hr/coci/archive/2018_2019/contest6_tasks.pdf) _T2 Konj_。**