bzoj#P2387. [Ceoi2011]Traffic

[Ceoi2011]Traffic

题目描述

格丁尼亚的中心位于 Kacza 河中的一座岛屿。每天清晨,成千上万辆汽车通过岛屿从西岸的住宅区(由桥连接岛的西部)到东岸的工业区(由桥连接岛的东部)。

该岛类似于矩形,它的边平行于主方向。故可将它看作是笛卡尔坐标系中的一个 A×BA\times B 的矩形,它的对角分别为 (0,0)(0, 0)(A,B)(A, B)。岛上有 nn 个交通节点,编号为 1n1\dots n(junction,此 处可理解为广义的路口),第 ii 个节点坐标为 (xi,yi)(x_i, y_i)。如果一个节点的坐标为 (0,y)(0, y),它就位于岛的西岸。类似的,坐标为 (A,y)(A, y) 的节点位于岛的东岸。

各个节点由街道连接,每条街道用线段连接两个节点。街道有单向行驶或双向行驶之分。除端点外任意两条街道都没有公共点。也没有桥梁或者隧道。你不能对道路网络形状做任何其他假设。沿河岸的街道或节点可能没有入口或者出口街道。

由于交通堵塞日趋严重,市长聘请你测试岛上当前的道路网是否足够。要求你写一个程序确定从岛的西岸的每个节点能够到达东岸的多少个节点。

输入格式

11 行包含 44 个整数 $n,m,A,B(1\le n\le 3\times 10^5,0\le m\le 9\times 10^5,1\le A,B\le 10^9)$ 分别表示格丁尼亚市中心的节点数,街道数和岛屿的尺寸。

接下来的 nn 行,每行包含两个整数 xi,yi(0xiA,0yiB)x_i,y_i (0\le x_i\le A,0\le y_i\le B),表示第 ii 个节点的坐标。任意两个节点的坐标都不相同。

再往下的 mm 行表示街道,每条街道用 33 个整数 $c_i, d_i, k_i(1\le c_i, d_i\le n, c_i\ne d_i, k_i\in\{1,2\})$,表示节点 ci,dic_i,d_i 有街道连接。如果 ki=1k_i=1,表示从 cic_idid_i 的街道是单向的,否则,这条街道可以双向行驶。每个无序对 {ci,di}\{c_i, d_i\} 最多出现一次。

你可以假设西岸节点中至少有 11 个能够到达东岸的一些节点。

输出格式

为每个西岸节点输出一行,包括从这个节点出发能够到达东岸的节点数目。

样例输入

5 3 1 3
0 0
0 1
0 2
1 0
1 1
1 4 1
1 5 2
3 5 2

样例输出

2
0
2

数据规模与约定

对于所有数据,保证 $1\le n\le 3\times 10^5,0\le m\le 9\times 10^5,1\le A,B\le 10^9$。

至少 3030 分的测试数据,n,m6×103n,m\le 6\times 10^3