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_。**