It's tough being a teen!
Υπάρχει πάντα μια λίστα με πράγματα που πρέπει να κάνετε!
Εδώ είναι μια λίστα για εσάς που άφησε μόλις σήμερα το πρωί ο γονιός σας:
- Κάνε την εργασία σου στα μαθηματικά.
- Κάλεσε τη γιαγιά σου.
- Κάλεσέ με στη δουλειά.
- Κάλεσε τον φίλο σου.
- Τάισε τον σκύλο.
- Άφησε τον σκύλο έξω.
- Παρακολούθησε τηλεόραση.
(Είναι ωραίο που ο γονιός σας φροντίζει να παρακολουθείτε τηλεόραση και όχι απλώς να χρησιμοποιείτε το διαδίκτυο όλη την ημέρα.)
Επίσης, ο γονιός σας σάς έχει δώσει περιορισμούς σε αυτές τις εργασίες:
- Κάνε την εργασία σου στα μαθηματικά ΠΡΙΝ παρακολουθήσεις τηλεόραση.
- Κάνε την εργασία σου στα μαθηματικά ΠΡΙΝ καλέσεις τον φίλο σου.
- Κάλεσε τη γιαγιά σου ΠΡΙΝ κάνεις την εργασία σου στα μαθηματικά.
- Τηλεφώνησέ ,=μου στη δουλειά ΠΡΙΝ τηλεφωνήσεις στον φίλο σου.
- Τάισε τον σκύλο ΑΦΟΥ με καλέσεις στη δουλειά.
Η λίστα εργασιών σας (παραπάνω) μπορεί τώρα να συντμηθεί σε:
1,7
1,4
2,1
3,4
3,5
όπου τα υποδηλώνουν ότι η εργασία με αριθμό πρέπει να γίνει πριν από την εργασία με αριθμό .
Δυστυχώς, κατά τη διάρκεια της ημέρας σας αποστέλλονται πρόσθετες οδηγίες μέσω email από τον γονιό σας.
Γράψτε ένα πρόγραμμα για να χρησιμοποιήσετε την αρχική λίστα εργασιών σας και τις πρόσθετες οδηγίες για να προκύψει μια λίστα των εργασιών σας στην έξοδο, με τη σειρά που πρέπει να τις κάνετε ή εναλλακτικά, εάν δεν μπορείτε να τις ολοκληρώσετε, θα πρέπει να τυπώσετε ότι δεν υπάρχει τρόπος να ολοκληρωθούν αυτά τα καθήκοντα, και απλά πρόκειται να πάτε για ύπνο.
Είσοδος
Θα σας δοθούν ζεύγη αριθμών, ένας αριθμός ανά γραμμή, που αντιπροσωπεύουν τις πρόσθετες οδηγίες που πρέπει να συμπεριληφθούν στην αρχική σας λίστα "εργασιών που εκκρεμούν", που δίνεται παραπάνω. Τα δεδομένα τελειώνουν με το ζεύγος εισόδου και . Μπορείτε να υποθέσετε ότι θα υπάρχουν το πολύ επιπλέον περιορισμοί.
Έξοδος
Θα πρέπει να τυπώσετε μια λίστα εργασιών με τη σειρά που πρέπει να εκτελεστούν ή ένα μήνυμα σφάλματος που να λέει ότι οι εργασίες δεν μπορούν να ολοκληρωθούν. Εάν υπάρχουν πολλές σειρές στις οποίες μπορούν να ολοκληρωθούν οι εργασίες, πρέπει να χρησιμοποιηθεί ο ακόλουθος κανόνας ισοπαλίας (tie-breaking rule):
Εάν υπάρχει ένα σύνολο εργασιών που μπορούν να εκτελεστούν ταυτόχρονα κατά τη διάρκεια της διαδικασίας, θα πρέπει να εκτελεστεί πρώτα η εργασία με τον μικρότερο αριθμό.
Παραδείγματα
input
6
2
5
4
0
0
output
3 5 6 2 1 4 7
Επεξήγηση του 1ου παραδείγματος:
Τα δεδομένα εισόδου μας λένε ότι η εργασία πρέπει να εκτελεστεί πριν από την εργασία και η εργασία πριν από την εργασία . Οι μόνες εργασίες χωρίς προϋποθέσεις είναι το και το , επομένως επιλέγουμε το επειδή έχει τον μικρότερο αριθμό. Τότε είναι δυνατά τα και . Επιλέγεται το και μετά το . Στη συνέχεια πρέπει να έρθει το , ακολουθούμενο από το . Τότε και το και το είναι δυνατά. Πρώτο επιλέγεται το μικρότερο.
input
7
2
4
5
0
0
output
Cannot complete these tasks. Going to bed.
Επεξήγηση του 2ου παραδείγματος:
Σημειώστε ότι η εργασία πρέπει να γίνει πριν από την εργασία , η οποία πρέπει να γίνει πριν την εργασία , η οποία πρέπει να γίνει πριν από την εργασία . Αυτό δημιουργεί μια αντίφαση και δεν μπορούμε να εκτελέσουμε τις εργασίες με τη σειρά που προδιαγράφεται.
Comments