COCI-09 (2009) - Γύρος #6 - 5 (Holmes)

View as PDF

Submit solution

Points: 45 (partial)
Time limit: 1.0s
Memory limit: 32M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Holmes

Ο Sherlock Holmes είναι ένας διάσημος ντετέκτιβ. Οι συνάδελφοί του στη Scotland Yard του παρέχουν συχνά μια σειρά αποδεικτικών στοιχείων και ζητούν τη βοήθειά του για την επίλυση των μυστηρίων. Μετά από πολλά χρόνια εξάσκησης, ο Holmes έχει αποκτήσει τεράστια εμπειρία και ήδη γνωρίζει τα αίτια για πολλά κοινά γεγονότα,γεγονός το οποίο, σε συνδυασμό με την εξαιρετική επαγωγική του ικανότητα, του επιτρέπει να λύνει υποθέσεις μέσα σε λίγα λεπτά, από την άνεση της καρέκλας του.
Η βάση γνώσης του Holmes μπορεί να μοντελοποιηθεί ως ένα σύνολο συνεπαγωγών της μορφής A\longrightarrow B (όπου τα A και B αντιπροσωπεύουν γεγονότα), πράγμα που σημαίνει ότι, εάν συνέβη το Α, το γεγονός Β πρέπει επίσης να έχει συμβεί (θυμηθείτε ότι η λογική συνέπεια είναι ψευδής μόνο αν το A είναι αληθές και το B είναι ψευδές). Φυσικά, οι συνεπαγωγές μπορούν να σχηματίσουν αλυσίδες συλλογισμού, π.χ. A\longrightarrow B\longrightarrow C. Ωστόσο, δεν θα υπάρξει ποτέ μια κυκλική αλυσίδα επιπτώσεις (π.χ. A\longrightarrow B\longrightarrow C\longrightarrow \ldots\longrightarrow A).
Ο Holmes λαμβάνει ένα σύνολο S = \{S1, S2, S3, \ldots, Sn\} γεγονότων που είναι γνωστό ότι έχουν συμβεί. Μπορεί τότε, χρησιμοποιώντας τις εκτεταμένες γνώσεις του και τις απαγωγικές του δυνάμεις, να βρει όλα τα γεγονότα που σίγουρα έχουν συμβεί.
Είναι σημαντικό να σημειωθεί ότι οι γνώσεις του Holmes είναι τόσο απίστευτα τεράστιες που γνωρίζει όλες τις πιθανές αιτίες των γεγονότων. Με άλλα λόγια, δεν υπάρχει καμία επίπτωση που να είναι αληθινή, αλλά να μην περιλαμβάνεται στη βάση γνώσεων του Holmes.
Πολλά πρακτορεία ντετέκτιβ θα εκτιμούσαν ιδιαίτερα τις μοναδικές δυνατότητες του Holmes, έτσι σας δόθηκε η αποστολή να πραγματοποιήσετε με έναν υπολογιστή ό,τι είναι απρόσιτο για τους κοινούς θνητούς. Γράψτε ένα πρόγραμμα που θα βρίκει όλα τα γεγονότα που σίγουρα έχουν συμβεί με βάση τις δεδομένες συνέπειες και τα στοιχεία που έχουν συλλέξει οι συνάδελφοί σας ντετέκτιβ.

Είσοδος

Η πρώτη γραμμή αποτελείται από τρεις ακέραιους αριθμούς, τον αριθμό των διαφορετικών συμβάντων D\;(1 \le D \le 1000), τον αριθμό των συνεπειών M\;(1 \le M \le 100\,000), και τον αριθμό των αποδεικτικών στοιχείων που συγκέντρωσαν οι ντετέκτιβ N\;(1 \le N \le D).
Κάθε μία από τις γραμμές M που ακολουθούν περιέχει δύο ακέραιους αριθμούς A και B\;(1 \le A, B \le D), που περιγράφουν μια συνεπαγωγή A\longrightarrow B.
Τέλος, κάθε μία από τις τελευταίες N γραμμές περιέχει έναν ακέραιο X\;(1 \le X \le D) που περιγράφει ένα γεγονός που πρέπει να έχει συμβεί, με βάση τα στοιχεία που συνέλεξαν οι ντετέκτιβ.

Έξοδος

Η πρώτη και μοναδική γραμμή εξόδου θα πρέπει να περιέχει ακέραιους αριθμούς (με οποιαδήποτε σειρά) που αντιπροσωπεύουν γεγονότα που σίγουρα έχουν συμβεί.

Παραδείγματα

input

3 2 1
1 2
2 3
2

output

1 2 3

input

3 2 1
1 3
2 3
3

output

3
Εξήγηση του 2ου παραδείγματος:

Η βάση γνώσεων περιέχει τις συνέπειες 1\rightarrow 3 και 2\rightarrow 3. Επομένως, ο Holmes γνωρίζει ότι το συμβάν 3 μπορεί να προκληθεί μόνο από τα γεγονότα 1 και 2, αλλά (χωρίς επιπλέον πληροφορίες), δεν μπορεί να είναι σίγουρος ποιο απο αυτά τα γεγονότα πραγματικά προκάλεσαν το 3. Ως αποτέλεσμα,το μόνο γεγονός που πρέπει να έχει συμβεί είναι αυτό που δίνεται στην είσοδο.


input

4 4 1
1 2
1 3
2 4
3 4
4

output

1 2 3 4
Εξήγηση του 3ου παραδείγματος:

Ο Holmes δεν γνωρίζει ποιο συμβάν από το σύνολο {\(2,\3\)} είναι άμεσα υπεύθυνο για το συμβάν 4. Ωστόσο, καθώς και τα δύο αυτά συμβάντα προκαλούνται μόνο από το συμβάν 1, Ο Holmes μπορεί να συμπεράνει ότι το συμβάν 1 πρέπει να έχει συμβεί. Κατά συνέπεια, έχουν συμβεί και τα γεγονότα 2, 3 και 4 (που δίνονται από τους ντετέκτιβ).


Comments

There are no comments at the moment.