Speed Limits
Baltic Olympiad in Informatics: 2002 Day 1, Problem 1
Στον πολυάσχολο κόσμο μας, συνήθως δεν μας ενδιαφέρει να ακολουθήσουμε το συντομότερο μονοπάτι, αλλά μάλλον το μονοπάτι που απαιτεί το συντομότερο χρόνο. Όταν οδηγείτε ένα αυτοκίνητο, αυτό σημαίνει ότι τα όρια ταχύτητας στους διάφορους δρόμους είναι ζωτικής σημασίας. Φανταστείτε τώρα ότι κάποιες πινακίδες ορίων ταχύτητας λείπουν. Δεδομένου ότι δεν μπορούμε να περιμένουμε από τον οδηγό να γνωρίζει τα όρια ταχύτητας απ' έξω, το μόνο λογικό συμπέρασμα είναι ότι όποιο όριο ταχύτητας τηρούσε προηγουμένως, θα εξακολουθεί να ισχύει και μετά τη διέλευση από σημείο που λείπει πινακίδα. Πρέπει να γράψετε ένα πρόγραμμα που να υπολογίζει την ταχύτερη διαδρομή, εκμεταλλευόμενοι τις πινακίδες που λείπουν.
Σας δίνεται μια περιγραφή του οδικού δικτύου σε μια περιοχή με έντονη κίνηση.
Προς διευκόλυνση, το δίκτυο θα αποτελείται από διαβάσεις και δρόμους.
Κάθε δρόμος είναι μονόδρομος, συνδέει ακριβώς δύο διαβάσεις και έχει το πολύ μία πινακίδα ορίου ταχύτητας, που βρίσκεται στην αρχή του δρόμου.
Για οποιεσδήποτε δύο διαβάσεις και
, θα υπάρχει το πολύ ένας δρόμος από την
στη
.
Μπορείτε να υποθέσετε ότι η επιτάχυνση είναι στιγμιαία και ότι δεν θα σας επηρεάσει η κίνηση.
Και φυσικά δεν οδηγείτε ποτέ ταχύτερα από το ισχύον όριο ταχύτητας.
Περιορισμοί
Είσοδος
Η πρώτη γραμμή της εισόδου θα αποτελείται από τρεις ακέραιους αριθμούς χωρισμένους μεταξύ τους με κενά διαστήματα ,
και
, όπου
είναι ο αριθμός των διαβάσεων που αριθμούνται από το
έως το
,
είναι ο αριθμός των δρόμων και
είναι η ετικέτα της διάβασης που αποτελεί τον προορισμό σας.
Κάθε μία από τις ακόλουθες γραμμές περιγράφει έναν δρόμο.
Κάθε γραμμή αποτελείται από τέσσερις ακέραιους αριθμούς
,
,
και
, χωρσμένους μεταξύ τους με κενά διαστήματα που δηλώνουν ότι ο δρόμος πηγαίνει από τη διάβαση με επισήμανση
στη διάβαση
, έχει όριο ταχύτητας
και μήκος
.
Αν το
είναι μηδέν, αυτό σημαίνει ότι λείπει η πινακίδα του ορίου ταχύτητας.
Ο χρόνος
που απαιτείται για έναν δεδομένο δρόμο είναι επομένως
αν
, διαφορετικά
, όπου
είναι το όριο ταχύτητας που τηρούσατε πριν φτάσετε στη διάβαση.
Σημειώστε ότι η διαίρεση πρέπει να γίνεται με αριθμούς κινητής υποδιαστολής για να αποφευχθεί η περιττή στρογγυλοποίηση.
Στην αρχή βρίσκεστε στη διασταύρωση
και η τρέχουσα ταχύτητά σας είναι
.
Έξοδος
Εξάγετε μία μόνο γραμμή με ακέραιους αριθμούς χωρισμένους μεταξύ τους με κενά διαστήματα, που περιγράφουν τις διαβάσεις που περνάτε κατά τη ταχύτερη δυνατή διαδρομή από το στο
.
Οι διασταυρώσεις πρέπει να γράφονται με την ακριβή σειρά με την οποία τις περνάτε, ξεκινώντας από το
και καταλήγοντας στο
.
Ποτέ δεν θα υπάρχουν δύο ταχύτερες διαδρομές που να απαιτούν τον ίδιο χρόνο.
Παράδειγμα
input
6 15 1
0 1 25 68
0 2 30 50
0 5 0 101
1 2 70 77
1 3 35 42
2 0 0 22
2 1 40 86
2 3 0 23
2 4 45 40
3 1 64 14
3 5 0 23
4 1 95 8
5 1 0 84
5 2 90 64
5 3 36 40
output
0 5 2 3 1
Επεξήγηση παραδείγματος:
Ο απαιτούμενος χρόνος σε αυτή την περίπτωση είναι 2,628 μονάδες.
Comments