QOJ.ac

QOJ

実行時間制限: 5 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#5296. 平面グラフ

統計

平面グラフ上に $n$ 個の頂点と $m$ 本の線分がある。第 $i$ 番目の頂点の座標は $(x_i, y_i)$ であり、第 $j$ 番目の線分は頂点 $u_j$ と頂点 $v_j$ を結び、重み $h_j$ を持つ。線分 $j$ は、頂点 $u_j$ と $v_j$ 以外には他の頂点を通らない。任意の2本の線分が共通点を持つ場合、その共通点は必ず頂点であり、そのとき両方の線分はその頂点に接続している。任意の2つの頂点 $x$ と $y$ について、頂点の列 $a_1, a_2, \dots, a_k$ が存在し、$a_1 = x, a_k = y$ であり、かつ任意の $1 \leq i < k$ に対して $a_i$ と $a_{i + 1}$ が線分で直接結ばれている。

これら $m$ 本の線分は平面をいくつかの領域に分割する。そのうち1つだけが無限に広がる領域であり、残りはすべて有界である。この無限の領域を「禁区」と呼ぶ。

$q$ 回のクエリが与えられる。各クエリでは、平面上の頂点ではなく、かつどの線分上にもない2点 $A$ と $B$ が与えられる。$A$ と $B$ を結ぶ曲線を描くとき、その曲線が禁区およびどの頂点も通らないようにし、かつ通過する線分の重みの最大値を最小化したい。各クエリに対して、この最小値を答えよ。

入力

入力は以下の形式で与えられる。

$n$ $m$ $x_1$ $y_1$ $\vdots$ $x_n$ $y_n$ $u_1$ $v_1$ $h_1$ $\vdots$ $u_m$ $v_m$ $h_m$ $q$ $A_{x,1}$ $A_{y,1}$ $B_{x,1}$ $B_{y,1}$ $\vdots$ $A_{x,q}$ $A_{y,q}$ $B_{x,q}$ $B_{y,q}$

1行目には2つの正整数 $n$ と $m$ が与えられ、それぞれ頂点数と線分数を表す。

続く $n$ 行には、各頂点の座標 $(x_i, y_i)$ が与えられる。

続く $m$ 行には、各線分の情報 $u, v, h$ が与えられ、頂点 $u$ と $v$ を結ぶ重み $h$ の線分であることを表す。ここで $u \neq v$ である。

続く1行には、クエリ数 $q$ が与えられる。

続く $q$ 行には、各クエリの2点の座標 $(A_x, A_y)$ と $(B_x, B_y)$ が与えられる。

出力

$q$ 行にわたって、各クエリの答えを順に出力せよ。特に、どの辺も跨がずに到達可能な場合は $0$ を出力し、条件を満たす曲線が存在しない場合は $-1$ を出力せよ。

入出力例

入力 1

9 12
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
1 2 10
2 3 10
3 6 10
6 9 10
9 8 10
8 7 10
7 4 10
4 1 10
2 5 3
5 8 2
5 6 4
4 5 1
3
1.5 1.5 2.5 2.5
1.5 2.5 2.5 1.5
0.5 0.5 1.5 1.5

出力 1

2
3
-1

注記

(画像は現在ありません)

制約

本問題には10個のテストケースがあり、各テストケースの規模と特徴は以下の通りである。

テストケース番号$n, m, q$ の範囲$x, y$ の範囲その他の特徴
1$n = 10$,$m = 13$,$q = 20$$0 \leq x \leq 1$,$0 \leq y \leq 2000$すべての線分の長さは $1$
2$n = 2012$,$m = 3016$,$q \leq 1000$
3$n, m \leq 50$,$q \leq 200$$0 \leq x,y \leq 1000$
4$n, m \leq 100000$,$q \leq 100000$
5
6$n, m \leq 2000$,$q \leq 2000$$0 \leq x, y \leq 10^7$すべての有界領域は凸多角形であり、すべての線分の重みは $1$
7すべての線分の重みは $1$
8$n, m \leq 100000$,$q \leq 100000$なし
9
10

すべてのデータにおいて、$5 \leq n, m \leq 100000$ を満たし、すべての線分の重みは $10^9$ を超えない。すべてのクエリの座標は $10^7$ 以下の非負実数であり、$0.5$ の奇数倍であることが保証されている。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.