3410. Cleaning Pipes

单点时限: 2.0 sec

内存限制: 256 MB

Linköping has a quite complex water transport system. Around Linköping there are several wells from which water is drawn. The water is then transported to other locations using pipes. Each pipe is a straight canal from one of the wells to some location in the city.

All the pipes are at the same depth under ground. Therefore, whenever two pipes cross, they form an intersection. Luckily the pipe system was constructed in such a way that exactly two pipes meet at each such intersection. The wells do not count as intersections. Any number of pipes (including zero or more than two) may originate at each well.

The intersections pose a problem, since dirt (a mixture of lime and other “remains”) tends to get stuck there. This dirt causes the pipes to degrade and collapse, leading to the formation of large sink holes. Such sink holes have a mesmerising effect on the students in Linköping, causing them to neglect their studies and remain uneducated, which in the long run will lead to a collapse of not just the pipe system but of the very fabric of society. Therefore it is imperative that the pipes are regularly cleaned. The Nordic Water Extraction and Redistribution Company (NWERC) – which is in charge of Linköping’s waterpipes – has an ample fleet of robots to perform this task. A robot can be inserted into a pipe at the well where the pipe begins. The robot then goes through the pipe all the way to its end and cleans all intersections along the way. After reaching the end, the robot turns around and returns back to the well where it started.

In order to prevent robot collisions, government regulations stipulate that whenever two pipes intersect, at most one of them may contain a robot.

Since the whole water system has to be shut down while it is being cleaned (another government regulation), the NWERC would like to do the cleaning quickly, by using a single batch of cleaning robots, all started at the same time.

Your task is to verify whether this can be done – i.e., whether we can simultaneously insert robots into a subset of the pipes in such a way that the robots will clean all intersections and there will be no risk of two robots colliding.


The input consists of:

• one line with two integers $w$ ($1 \leq w \leq 1 000$), the number of wells, and $p$ ($1 \leq p \leq 1 000$), the number of pipes;
• $w$ lines, the ith of which contains two integers $x_i$ and $y_i$ ($−10 000 \leq x, y \leq 10 000$), the position of well number $i$ (the wells are numbered from $1$ to $w$);
• $p$ lines each with three integers $s$ ($1 \leq s \leq w$), the well at which the pipe starts, and $x$ and $y$ ($−10 000 \leq x, y \leq 10 000$), the position at which the pipe ends.
Each pipe will contain exactly one well, the one at which it starts. Any point shared by more than two pipes will be a well. Any two pipes share at most one common point. The common point of two pipes may be the endpoint of one or both of them. All pipes have positive length.


If it is possible to clean all intersections as described above, output possible. Otherwise, output impossible.

2 人解决,2 人已尝试。

2 份提交通过,共有 3 份提交。

8.0 EMB 奖励。

创建: 6 年,8 月前.

修改: 6 年,8 月前.

最后提交: 6 年,8 月前.

来源: Northwestern European Regional Contest 2015