QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#1421. 宇宙船

Statistics

宇宙の遥か彼方,とある銀河には,文明が発達した $N$ 個の星がある.星には $1$ から $N$ までの番号がついている.それぞれの星は 1 つの宇宙船を管理している.宇宙船は,ある他の星へ行くために使われている状態,または,使われていない状態のいずれかにある.星 $a$ が管理する宇宙船が星 $b$ へ行くために使われている状態にあるとするとき,宇宙船は星 $a$ と星 $b$ の間を何回も往復している.宇宙船が星 $a$ から星 $b$ へ行くとき,一般旅客は宇宙船に乗って星 $a$ から星 $b$ へ行くことができるが,宇宙船が星 $b$ から星 $a$ へ戻るときは,燃料の問題や荷物をのせるなどの都合により,一般旅客は乗船できない.また,星 $a$ が管理する宇宙船が使われていない状態にあるとき,その宇宙船は星 $a$ で待機している.

今,すべての宇宙船が使われていない状態にある.今後の宇宙船の状態の変更のスケジュールが決まっている.状態の変更は,次のいずれかの種類である.

  • 使われていない状態にある星 $a$ が管理する宇宙船を,星 $b$ へ行くために使われている状態にする.ただし,これは一般旅客が宇宙船に何回か乗って星 $b$ から星 $a$ へ行くことができないときにのみ行われる.
  • 使われている状態にある星 $a$ が管理する宇宙船を,使われていない状態にする.

この銀河を旅行する計画を立てているある 2 人は,待ち合わせの予定を考えるため,次の形式の質問を何個か用意した.

  • スケジュールのある時点で,1 人が星 $a$ に,もう 1 人が星 $b$ にいるとしたとき,2 人が一般旅客として宇宙船を使って合流することができるか,さらに,合流することができるならば,どの星で合流するのが宇宙船の使用回数が最も少なくなるか.すなわち,星 $c$ であって,一般旅客が宇宙船に何回か乗って星 $a$ から星 $c$ へも星 $b$ から星 $c$ へも行くことができるようなものは存在するか,さらに,存在するならば,星 $a$ から星 $c$ へ行くための宇宙船の使用回数と星 $b$ から星 $c$ へ行くための宇宙船の使用回数の合計を最小にするような星 $c$ はどれか.

優秀なプログラマであるあなたは,2 人の質問すべてに対する答えを求めることを求められた.

課題

今後の宇宙船の状態の変更のスケジュールと質問が時系列順に与えられたとき,質問に答えるプログラムを作成せよ.

入力

標準入力から以下の入力を読み込め.

  • 1 行目には整数 $N,Q$ が空白を区切りとして書かれており,星の個数が $N$,状態の変更の回数と質問の個数の合計が $Q$ であることを表す.
  • 続く $Q$ 行は状態の変更と質問を時系列順に表している.これらのうちの $i$ 行目($1\le i\le Q$)には 2 個または 3 個の整数が空白を区切りとして書かれている.1 個目の整数を $T_i$ とすると,以下のいずれかである.

(i) $T_i=1$ のとき

この行には整数 $T_i,A_i,B_i$ が書かれており,次の状態の変更を表す:星 $A_i$ が管理する宇宙船を,星 $B_i$ へ行くために使われている状態にする.

$1\le A_i\le N$,$1\le B_i\le N$,$A_i\ne B_i$ であること,この時点で星 $A_i$ が管理する宇宙船は使われていない状態にあること,この時点で一般旅客が宇宙船に何回か乗って星 $B_i$ から星 $A_i$ へ行くことはできないことが保証される.

(ii) $T_i=2$ のとき

この行には整数 $T_i,A_i$ が書かれており,次の状態の変更を表す:星 $A_i$ が管理する宇宙船を,使われていない状態にする.

$1\le A_i\le N$ であること,この時点で星 $A_i$ が管理する宇宙船は使われている状態にあることが保証される.

(iii) $T_i=3$ のとき

この行には整数 $T_i,A_i,B_i$ が書かれており,次の質問を表す:この時点で,1 人が星 $A_i$ に,もう 1 人が星 $B_i$ にいるとしたとき,2 人が一般旅客として宇宙船を使って合流することができるか,さらに,合流することができるならば,どの星で合流するのが宇宙船の使用回数が最も少なくなるか.

$1\le A_i\le N$,$1\le B_i\le N$,$A_i\ne B_i$ であることが保証される.

出力

標準出力に,それぞれの質問ごとに,

  • 合流することができるならば,宇宙船の使用回数を最も少なくするための合流する星の番号,
  • 合流することができないならば,整数 $-1$

を順に 1 行ずつ出力せよ.

制約

すべての入力データは以下の条件を満たす.

  • $2\le N\le1\,000\,000$.
  • $1\le Q\le1\,000\,000$.

小課題

小課題 1 [10 点]

以下の条件を満たす.

  • $N\le5\,000$.
  • $Q\le5\,000$.

小課題 2 [30 点]

  • $T_i\ne2$($1\le i\le Q$)を満たす.

小課題 3 [60 点]

追加の制限はない.

入出力例

入力 1

6 5
1 2 4
3 2 6
1 4 3
1 6 4
3 2 6

出力 1

-1
4

注記

この例では,状態の変更と質問は順に以下のようになっている.

  • 星 $2$ が管理する宇宙船が,星 $4$ へ行くために使われる状態になる.
  • この時点で 2 人が星 $2$ と星 $6$ にいた場合,合流することはできないので,$-1$ を出力する.
  • 星 $4$ が管理する宇宙船が,星 $3$ へ行くために使われる状態になる.
  • 星 $6$ が管理する宇宙船が,星 $4$ へ行くために使われる状態になる.
  • この時点で 2 人が星 $2$ と星 $6$ にいた場合,星 $3$ または星 $4$ で合流することができる.使用する宇宙船の回数を最小にするためには星 $4$ で合流するべきであるため,$4$ を出力する.

入力 2

8 36
1 1 2
1 6 5
1 7 8
3 5 6
1 5 4
1 8 1
3 7 2
3 3 8
3 1 8
1 3 2
1 4 1
3 8 5
3 4 3
2 4
3 6 8
1 2 5
3 6 8
2 8
3 1 4
3 6 8
3 6 3
2 3
3 1 2
1 4 3
3 2 6
1 8 3
3 1 7
3 1 6
3 5 4
2 2
2 5
1 3 6
1 2 7
3 1 4
3 1 5
3 6 7

出力 2

5
2
-1
1
1
2
-1
5
4
-1
5
2
5
3
5
4
3
5
6

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.