QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 64 MB Puntuación total: 100

#23772. Perjalanan Kapal

Estadísticas

Deskripsi Masalah

Di negara JOI terdapat $n$ pulau, dan masing-masing pulau diberi nomor dari $1$ hingga $n$. Saat ini, di negara JOI sedang dilakukan pengembangan jaringan rute pelayaran yang menghubungkan antarpulau.

Anda bekerja di pusat tiket yang menangani tiket kapal. Di negara JOI, ada banyak orang yang ingin bepergian antarpulau menggunakan kapal dengan biaya semurah mungkin; mereka menuliskan pulau keberangkatan dan pulau tujuan pada formulir pemesanan lalu mengirimkannya kepada Anda.

Tugas Anda adalah, segera setelah menerima formulir pemesanan dari pelanggan, menghitung ongkos termurah di antara rute-rute yang menghubungkan pulau keberangkatan dan pulau tujuan dengan berpindah-pindah beberapa kapal, lalu memberitahukannya kepada pelanggan. Namun, bergantung pada rencana perjalanan, ada kalanya perjalanan menggunakan kapal tidak dapat dilakukan. Pada saat itu, Anda harus memberi tahu pelanggan bahwa "tidak dapat bepergian menggunakan kapal". Selain itu, di negara JOI, kapal-kapal baru yang menghubungkan antarpulau mulai beroperasi satu demi satu, dan informasi tersebut disampaikan kepada Anda dari waktu ke waktu. Saat membalas pelanggan, Anda harus memperhatikan informasi terbaru.

Ketika formulir pemesanan pelanggan dan informasi operasional kapal yang baru mulai beroperasi diberikan sebagai masukan, buatlah program untuk menentukan balasan kepada pelanggan.

Format Masukan

Pada baris ke-$1$ masukan tertulis $2$ bilangan bulat $n, k$ ($1 \le n \le 100, 1 \le k \le 5000$). Ini menyatakan bahwa jumlah pulau adalah $n$ pulau dan masukan terdiri dari $k + 1$ baris. Pada baris ke-$(i + 1)$ ($1 \le i \le k$), tertulis $3$ atau $4$ bilangan bulat yang dipisahkan oleh spasi.

  • Ketika angka pertama adalah $0$, baris ini menyatakan formulir pemesanan pelanggan. Pada baris ini tertulis $3$ bilangan bulat $0, a, b$ ($1 \le a \le n, 1 \le b \le n, a \ne b$) yang dipisahkan oleh spasi. Ini berarti pelanggan mengirimkan formulir pemesanan dengan pulau $a$ sebagai tempat keberangkatan dan pulau $b$ sebagai tempat tujuan.
  • Ketika angka pertama adalah $1$, baris ini menyatakan informasi operasional kapal yang baru mulai beroperasi. Pada baris ini tertulis $4$ bilangan bulat $1, c, d, e$ ($1 \le c \le n, 1 \le d \le n, c \ne d, 1 \le e \le 1000000$). Ini berarti kapal yang melayani perjalanan pulang-pergi antara pulau $c$ dan pulau $d$ baru mulai beroperasi, dan ongkos kapal ini dari pulau $c$ ke pulau $d$ maupun dari pulau $d$ ke pulau $c$ keduanya adalah $e$. Untuk formulir pemesanan setelah baris ini, Anda harus membalas dengan mempertimbangkan kapal ini juga.

Pada tahap awal, dianggap ada $0$ kapal yang beroperasi. Di antara baris masukan, banyaknya baris yang menyatakan informasi operasional kapal paling banyak adalah $1000$ baris. Selain itu, perhatikan bahwa di antara dua pulau yang sama bisa terdapat beberapa kapal yang beroperasi.

Format Keluaran

Misalkan banyaknya baris yang menyatakan formulir pemesanan dalam masukan adalah $m$. Keluaran terdiri dari $m$ baris, dan pada baris ke-$i$ ($1 \le i \le m$), tuliskan sebuah bilangan bulat yang menyatakan balasan untuk formulir pemesanan ke-$i$. Artinya, jika memungkinkan untuk bepergian antara tempat keberangkatan dan tempat tujuan pada formulir pemesanan ke-$i$ dengan berpindah-pindah beberapa kapal, tuliskan nilai minimum dari total ongkosnya. Jika tidak memungkinkan untuk bepergian, tuliskan $-1$.

Contoh Masukan dan Keluaran

Contoh Masukan 1

3 8
1 3 1 10
0 2 3
1 2 3 20
1 1 2 5
0 3 2
1 1 3 7
1 2 1 9
0 2 3

Contoh Keluaran 1

-1
15
12

Contoh Masukan 2

5 16
1 1 2 343750
1 1 3 3343
1 1 4 347392
1 1 5 5497
1 2 3 123394
1 2 4 545492
1 2 5 458
1 3 4 343983
1 3 5 843468
1 4 5 15934
0 2 1
0 4 1
0 3 2
0 4 2
0 4 3
0 5 3

Contoh Keluaran 2

5955
21431
9298
16392
24774
8840

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.