Task: | Sadonkorjuu |
Sender: | zli0122 |
Submission time: | 2022-11-09 08:03:33 +0200 |
Language: | Python3 (CPython3) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | TIME LIMIT EXCEEDED | 0 |
#2 | TIME LIMIT EXCEEDED | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.02 s | 1, 2 | details |
#2 | ACCEPTED | 0.02 s | 1, 2 | details |
#3 | ACCEPTED | 0.02 s | 1, 2 | details |
#4 | ACCEPTED | 0.02 s | 1, 2 | details |
#5 | ACCEPTED | 0.02 s | 1, 2 | details |
#6 | ACCEPTED | 0.05 s | 1, 2 | details |
#7 | TIME LIMIT EXCEEDED | -- | 2 | details |
#8 | ACCEPTED | 0.03 s | 1, 2 | details |
#9 | TIME LIMIT EXCEEDED | -- | 2 | details |
#10 | ACCEPTED | 0.03 s | 1, 2 | details |
#11 | TIME LIMIT EXCEEDED | -- | 2 | details |
#12 | TIME LIMIT EXCEEDED | -- | 2 | details |
#13 | TIME LIMIT EXCEEDED | -- | 2 | details |
#14 | TIME LIMIT EXCEEDED | -- | 2 | details |
#15 | TIME LIMIT EXCEEDED | -- | 1, 2 | details |
#16 | ACCEPTED | 0.03 s | 1, 2 | details |
#17 | ACCEPTED | 0.03 s | 1, 2 | details |
#18 | ACCEPTED | 0.04 s | 1, 2 | details |
#19 | ACCEPTED | 0.03 s | 1, 2 | details |
#20 | ACCEPTED | 0.03 s | 1, 2 | details |
#21 | TIME LIMIT EXCEEDED | -- | 2 | details |
#22 | TIME LIMIT EXCEEDED | -- | 2 | details |
#23 | TIME LIMIT EXCEEDED | -- | 2 | details |
#24 | ACCEPTED | 0.04 s | 1, 2 | details |
#25 | TIME LIMIT EXCEEDED | -- | 2 | details |
#26 | ACCEPTED | 0.04 s | 1, 2 | details |
#27 | TIME LIMIT EXCEEDED | -- | 2 | details |
#28 | ACCEPTED | 0.04 s | 1, 2 | details |
#29 | TIME LIMIT EXCEEDED | -- | 2 | details |
#30 | ACCEPTED | 0.04 s | 1, 2 | details |
#31 | TIME LIMIT EXCEEDED | -- | 2 | details |
Code
class Kaupunki: def __init__(self, indeksi, tyyppi): self.indeksi = indeksi self.tyyppi = tyyppi self.naapurit = [] self.etaisyydet = [] self.tiet = {} class Tie: def __init__(self): self.pituus = 0 self.paadyt = [] def summaa(lista): summa = 0 for jasen in lista: summa = summa + jasen return summa def onkolistassa(lista, listb): for jasen in lista: if not jasen in listb: return False return True def syote(): global n n = int(input()) tyypit = [int(tyyppi) for tyyppi in input().split(" ")] tiet = [] for i in range(n - 1): userinput = [int(luku) for luku in input().split(" ")] tie = Tie() tie.paadyt = [indeksi - 1 for indeksi in userinput[:2]] tie.pituus = userinput[2] tiet.append(tie) return tyypit, tiet def sievenna(tyypit, tiet): global n kaupungeittain = [[] for i in range(n)] for indeksi in range(n-1): kaupungeittain[tiet[indeksi].paadyt[0]].append([tiet[indeksi].paadyt[1], tiet[indeksi].pituus]) kaupungeittain[tiet[indeksi].paadyt[1]].append([tiet[indeksi].paadyt[0], tiet[indeksi].pituus]) kaupungit = [] for indeksi in range(n): if tyypit[indeksi] == 0: kaupunki = Kaupunki(indeksi, 0) kaupunki.naapurit = [luvut[0] for luvut in kaupungeittain[indeksi]] kaupunki.etaisyydet = [luvut[1] for luvut in kaupungeittain[indeksi]] else: kaupunki = Kaupunki(indeksi, 1) kaupunki.naapurit = [luvut[0] for luvut in kaupungeittain[indeksi]] kaupunki.etaisyydet = [luvut[1] for luvut in kaupungeittain[indeksi]] kaupungit.append(kaupunki) for kaupunki in kaupungit: kaupunki.naapurit = [kaupungit[indeksi] for indeksi in kaupunki.naapurit] for indeksi in range(len(kaupunki.naapurit)): kaupunki.tiet[kaupunki.naapurit[indeksi]] = kaupunki.etaisyydet[indeksi] return kaupungit def loyda(kaupunki, kaupungit, lyhimmat_reitit, selatut = []): #print("aloitettu kierros") #print("kaupungin indeksi:", kaupunki.indeksi) selatut.append(kaupunki) #print("selattujen kaupuinkien indeksit:", [kpk.indeksi for kpk in selatut]) reitit = [] for naapuri in kaupunki.naapurit: matka = kaupunki.tiet[naapuri] #print(f"tarkastellaan naapuria {naapuri.indeksi}") if naapuri.tyyppi == 0: #print(f"naapuri {naapuri.indeksi} on satama.") reitit.append(matka) continue elif naapuri.indeksi in lyhimmat_reitit.keys(): #print("naapurille on jo löydetty lyhin reitti.") reitit.append(matka + lyhimmat_reitit[naapuri.indeksi]) continue elif naapuri in selatut: # jos naapuri on selattu jo, turha jatkaa. #print(f"naapuri {naapuri.indeksi} on jo selattu.") continue elif onkolistassa(naapuri.naapurit, selatut): # jos naapurin kaikki naapurit ovat selattuja, turha jatkaa. #print(f"naapurin {naapuri.indeksi} kaikki naapurit on jo selattu.") continue else: lisamatka = loyda(naapuri, kaupungit, lyhimmat_reitit, selatut = selatut) if lisamatka != 0: matka = matka + lisamatka #print("matka:", matka) reitit.append(matka) if reitit == []: return 0 else: #print("kaikki reitit:", reitit) lyhin = min(reitit) if kaupunki.indeksi in lyhimmat_reitit.keys(): if lyhimmat_reitit[kaupunki.indeksi] > lyhin: lyhimmat_reitit[kaupunki.indeksi] = lyhin else: lyhimmat_reitit[kaupunki.indeksi] = lyhin return lyhin def main(): tyypit, tiet = syote() kaupungit = sievenna(tyypit, tiet) reitit = [] lyhimmat_reitit = {} for kaupunki in kaupungit: #print() #print(f"tarkastellaan kaupunkia {kaupunki.indeksi}.") #print(f"kaupungin {kaupunki.indeksi} tyyppi on {kaupunki.tyyppi}.") #print(f"sen naapureita ovat {[naapuri.indeksi for naapuri in kaupunki.naapurit]}.") if kaupunki.tyyppi == 1: lyhin = loyda(kaupunki, kaupungit, lyhimmat_reitit,selatut = []) #print(f"lyhin reitti kaupungista {kaupunki.indeksi} satamaan on {lyhin}.") reitit.append(lyhin) #print(lyhimmat_reitit) #print(reitit) print(summaa(reitit)) if __name__ == "__main__": main()
Test details
Test 1
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1 0 |
correct output |
---|
0 |
user output |
---|
0 |
Test 2
Group: 1, 2
Verdict: ACCEPTED
input |
---|
5 0 0 0 0 0 1 2 1 2 3 2 3 4 3 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 3
Group: 1, 2
Verdict: ACCEPTED
input |
---|
4 1 0 1 1 1 2 10 2 3 20 2 4 30 |
correct output |
---|
60 |
user output |
---|
60 |
Test 4
Group: 1, 2
Verdict: ACCEPTED
input |
---|
5 0 1 1 1 0 1 2 10 2 3 20 3 4 30 ... |
correct output |
---|
80 |
user output |
---|
80 |
Test 5
Group: 1, 2
Verdict: ACCEPTED
input |
---|
5 0 1 0 1 1 1 2 1 2 3 5 3 4 3 ... |
correct output |
---|
6 |
user output |
---|
6 |
Test 6
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
5506363 |
user output |
---|
5506363 |
Test 7
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
1795118520 |
user output |
---|
(empty) |
Test 8
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 ... |
correct output |
---|
293576 |
user output |
---|
293576 |
Test 9
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
816932444 |
user output |
---|
(empty) |
Test 10
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
3089 |
user output |
---|
3089 |
Test 11
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
40839 |
user output |
---|
(empty) |
Test 12
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
5683983203973 |
user output |
---|
(empty) |
Test 13
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 ... |
correct output |
---|
58572993 |
user output |
---|
(empty) |
Test 14
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
32755 |
user output |
---|
(empty) |
Test 15
Group: 1, 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
126238345 |
user output |
---|
(empty) |
Test 16
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 ... |
correct output |
---|
278678 |
user output |
---|
278678 |
Test 17
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 ... |
correct output |
---|
34929 |
user output |
---|
34929 |
Test 18
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
1543963 |
user output |
---|
1543963 |
Test 19
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
39606 |
user output |
---|
39606 |
Test 20
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 ... |
correct output |
---|
321598 |
user output |
---|
321598 |
Test 21
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
978670626 |
user output |
---|
(empty) |
Test 22
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... |
correct output |
---|
375218 |
user output |
---|
(empty) |
Test 23
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 ... |
correct output |
---|
60422556 |
user output |
---|
(empty) |
Test 24
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
291990 |
user output |
---|
291990 |
Test 25
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
59607954 |
user output |
---|
(empty) |
Test 26
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
990 |
user output |
---|
990 |
Test 27
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
199982 |
user output |
---|
(empty) |
Test 28
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
7987 |
user output |
---|
7987 |
Test 29
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
3137875 |
user output |
---|
(empty) |
Test 30
Group: 1, 2
Verdict: ACCEPTED
input |
---|
1000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
4657693 |
user output |
---|
4657693 |
Test 31
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
200000 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
1652889357 |
user output |
---|
(empty) |