In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
The center of Gdynia is located on an island in the middle of the Kacza river. Every morning thousands of cars drive through this island from the residential districts on the western bank of the river (using bridge connections to junctions on the western side of the island) to the industrial areas on the eastern bank (using bridge connections from junctions on the eastern side of the island).
The island resembles a rectangle, whose sides are parallel to the cardinal directions. Hence, we view it as an rectangle in a Cartesian coordinate system, whose opposite corners are in points and .
On the island, there are junctions numbered from to . The junction number has coordinates . If a junction has coordinates of the form , it lies on the western side of the island. Similarly, junctions with the coordinates lie on the eastern side. Junctions are connected by streets. Each street is a line segment connecting two junctions. Streets can be either unidirectional or bidirectional. No two streets may have a common point (except for, possibly, a common end in a junction). There are are no bridges or tunnels. You should not assume anything else about the shape of the road network. In particular, there can be streets going along the river bank or junctions with no incoming or outgoing streets.
Because of the growing traffic density, the city mayor has hired you to check whether the current road network on the island is sufficient. He asked you to write a program which determines how many junctions on the eastern side of the island are reachable from each junction on the western side.
The first line of the standard input contains four integers , , and (, , ). They denote the number of junctions in the center of Gdynia, the number of streets and dimensions of the island, respectively.
In each of the following lines there are two integers , (, ) describing the coordinates of the junction number . No two junctions can have the same coordinates.
The next lines describe the streets. Each street is represented in a single line by three integers , , (, , ). Their meaning is that junctions and are connected with a street. If , then this is a unidirectional street from to . Otherwise, the street can be driven in both directions. Each unordered pair can appear in the input at most once.
You can assume that there is at least one junction on the western side of the island from which it is possible to reach some junction on the eastern side of the island.
Additionally, in test cases worth at least 30 points, .
Your program should write to the standard output one line for each junction on the western side of the island. This line should contain the number of junctions on the eastern side that are reachable from that junction. The output should be ordered according to decreasing -coordinates of the junctions.
For the input data:
5 3 1 3 0 0 0 1 0 2 1 0 1 1 1 4 1 1 5 2 3 5 2
the correct result is:
2 0 2
Whereas for the input data:
12 13 7 9 0 1 0 3 2 2 5 2 7 1 7 4 7 6 7 7 3 5 0 5 0 9 3 9 1 3 2 3 2 1 3 4 1 4 5 1 5 6 1 9 3 1 9 4 1 9 7 1 9 12 2 10 9 1 11 12 1 12 8 1 12 10 1
the correct result is:
4 4 0 2
Task author: Jakub Lacki.