問題一覧 > ショートコード

No.3386 Up Down Hiking (Python)

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 6
作問者 : tRue / テスター : alcea naka9 Rho 259-Momone
ProblemId : 12881 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-11-22 12:43:02
コンテストの他の問題:

問題文

naka9 君は素晴らしい景観で有名な TSG 王国へ旅行する計画を組んでいます。

TSG 王国には地点 1 から地点 $N$ の地点とそれらを繋ぐ $M$ 本の道路があり、 $i$ 番目の道路は相異なる地点 $a_i$ と地点 $b_i$ を双方向に繋いでいます。 地点間を直接繫ぐ道路は高々 1 本しかありません。

また、各地点 $i$ はこれら $N$ 地点の中で $H_i$ 番目に標高が低いです。 ここで、 $H_i$ は相異なります。

naka9 君は地点 1 から地点 $N$ までハイキングをしようと考えていますが、 何度も登り降りしたくありません。

そこで、ある地点まで登り、ある地点から下りであるような経路、 つまり、地点 $v_1(=1),v_2,\dots,v_K(=N)$ を順に歩くとして、ある $1\leq j\leq K$ について $H_{v_1},\dots,H_{v_j}$ は単調増加、 $H_{v_j},\dots,H_{v_K}$ は単調減少になるような経路を探したいです。

このような条件を満たす経路の中で、最も長い経路の長さを出力してください。 ただし、条件を満たす経路が存在しない場合はその旨を出力してください。

経路・経路の長さとは 頂点 $1$ から $N$ への長さ $K$ の経路が存在するとは、以下の条件を満たす $1$ 以上 $N$ 以下の数からなる整数列 $v_1,v_2,\ldots,v_K$ が存在することを言います。
  • $v_1=1$
  • $v_K=N$
  • $i=1,2,\ldots,K-1$ について、地点 $v_i$ と地点 $v_{i+1}$ を直接繋ぐ道路が存在する

入力

$N\ M$
$H_1\ H_2\ \cdots\ H_N$
$a_1\ b_1$
$\vdots$
$a_M\ b_M$
  • $2\leq N\leq 10^5$
  • $1\leq M\leq \min(10^5,\frac{N(N-1)}{2})$
  • $1\leq H_i\leq N \quad (1\leq i\leq N)$
  • $i\neq j$ のとき $H_i\neq H_j$
  • $1\leq a_i<b_i\leq N\quad(1\leq i\leq M)$
  • $i\neq j$ のとき $(a_i,b_i)\neq(a_j,b_j)$
  • 入力は全て整数

出力

条件を満たす経路の長さを出力してください。ただし、そのような経路が存在しない場合には -1 を出力してください。また、最後に改行してください。

スコア

想定解: $236$ bytes

スコア計算式 提出されたソースコードのコード長が $x$、この問題の想定解のコード長が $y$ であるとき、そのソースコードのスコアは以下のように計算される。
  • $y\leq x$ のとき: $\lfloor100\exp(-0.012(x-y))\rfloor$ 点
  • $x<y$ のとき: $101$ 点
この問題のスコアはこの問題に提出されたソースコードのスコアの最大値である。

サンプル

サンプル1
入力
3 2
1 3 2
1 2
2 3
出力
3

地点 1 から地点 2 まで登り、そこから下りのみで地点 3 までたどり着けます。

サンプル2
入力
3 2
2 1 3
1 2
2 3
出力
-1

条件を満たす経路は存在しないため、-1 を出力してください。

サンプル3
入力
10 20
1 9 5 4 7 3 8 6 10 2
7 9
1 2
3 10
1 10
6 8
7 8
1 3
4 6
4 8
1 6
3 6
7 10
5 10
2 6
1 9
9 10
2 4
8 10
3 5
5 7
出力
10

同じ地点を複数回通っても構いません。

サンプル4
入力
4 4
2 3 4 1
1 2
2 3
3 4
1 4
出力
6

地点 1 や地点 $N$ を複数回通っても構いません。

サンプル5
入力
4 2
1 2 3 4
1 2
3 4
出力
-1

地点 $1$ から地点 $N$ への経路が存在しないこともあります。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。