| Task: | Sadonkorjuu |
| Sender: | Finnduino |
| Submission time: | 2022-11-06 03:33:28 +0200 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | TIME LIMIT EXCEEDED | 0 |
| #2 | TIME LIMIT EXCEEDED | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | 1, 2 | details |
| #2 | ACCEPTED | 0.04 s | 1, 2 | details |
| #3 | ACCEPTED | 0.04 s | 1, 2 | details |
| #4 | ACCEPTED | 0.04 s | 1, 2 | details |
| #5 | ACCEPTED | 0.04 s | 1, 2 | details |
| #6 | ACCEPTED | 0.39 s | 1, 2 | details |
| #7 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #8 | ACCEPTED | 0.76 s | 1, 2 | details |
| #9 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #10 | ACCEPTED | 0.23 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 | ACCEPTED | 0.33 s | 1, 2 | details |
| #16 | TIME LIMIT EXCEEDED | -- | 1, 2 | details |
| #17 | TIME LIMIT EXCEEDED | -- | 1, 2 | details |
| #18 | ACCEPTED | 0.50 s | 1, 2 | details |
| #19 | ACCEPTED | 0.36 s | 1, 2 | details |
| #20 | ACCEPTED | 0.72 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.71 s | 1, 2 | details |
| #25 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #26 | ACCEPTED | 0.62 s | 1, 2 | details |
| #27 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #28 | ACCEPTED | 0.29 s | 1, 2 | details |
| #29 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #30 | ACCEPTED | 0.33 s | 1, 2 | details |
| #31 | TIME LIMIT EXCEEDED | -- | 2 | details |
Code
#import math
#import numpy
import math
CityCount = int(input())
CityStates = input().split()
RoadList = []
#Build a nested array of roads
for n in range(0,CityCount-1):
temp = input().split()
RoadList.append(temp)
#Convert to numpy array
#RoadMatrix = numpy.array(RoadList)
RoadDict = {}
#Cycle through roads to find ones that connect to a given node, then build a dictionary which indexes each connected road
for a in range(0,CityCount):
tempList = []
#Roads
for b in range(0, CityCount-1):
if(int(RoadList[b][0]) == a+1):
tempList.append([int(RoadList[b][1])-1,int(RoadList[b][2])])
elif(int(RoadList[b][1]) == a+1):
tempList.append([int(RoadList[b][0])-1,int(RoadList[b][2])])
#Cycle them through again, rearraging them in ascending weight
for b in range(0, len(tempList)):
tempList.sort(key= lambda x: x[1])
RoadDict[a] = tempList
#Actually find something
currentNode = 0
nodeDistances = [0]+[math.inf]*(CityCount-1)
totalDistances = 0
unvisited_nodes = [x for x in range(CityCount)]
#shortest_path = {}
#previous_nodes = {}
#start_node = 0
def connection(node, target):
node = node
target = target
for con in RoadDict[node]:
if(int(con[0]) == target):
return int(con[1])
return 0
def Neighbors(node):
return RoadDict[node]
def Distance(nodeList):
totalDistance = 0
for nodeIndex in range(0,len(nodeList)-1):
totalDistance += connection(nodeList[nodeIndex], nodeList[nodeIndex+1])
return totalDistance
class Tree():
def __init__(self, parent, history):
self.parent = parent
self.children = []
self.history = history
def addChild(self, child):
self.children.append(child)
class Node():
def __init__(self, nodeVal) -> None:
self.value = nodeVal
self.root = None
def setParent(self, root):
self.root = root
def __repr__(self) -> str:
return
#Initialize nodes:
NodeList = []
for i in range(0, CityCount):
NodeList.append(Node(i))
bingus=[]
EndNode = [[] for _ in range(CityCount)]
sum = 0
for startingNode in NodeList:
#treeList = []
node = startingNode
travelledNodes = [False]*CityCount
#nodeIterator = 0
Queue = []
Queue.append(startingNode)
NodeStates = {}
travelledNodes[startingNode.value] = True
if CityStates[startingNode.value] == "0":
EndNode[startingNode.value].append(startingNode)
else:
while Queue:
node = Queue[0]
#root = Tree(node, None)
Queue.pop(0)
smallestWeight = math.inf
smallestWeightNode = 0
portNotFound = True
#newSmallest = False
#if CityStates[node.value] == "0":
#Found a port
#print(EndNode)
# portNotFound = False
for neighbor in RoadDict[node.value]:
neighborNode = NodeList[neighbor[0]]
if(not travelledNodes[neighbor[0]]):
# neighborNode.setParent(node)
travelledNodes[neighbor[0]] = True
Queue.append(neighborNode)
neighborNode.setParent(node)
if(CityStates[neighbor[0]] == "0"):
EndNode[startingNode.value].append(neighborNode)
DistanceIterator = 0
smallestDistance = math.inf
for leaf in EndNode[startingNode.value]:
cahceNode = leaf
wtfdistance = 0
lastNode = cahceNode.value
Distances = []
distance = 0
while True:
if cahceNode.value == startingNode.value:
distance += connection(cahceNode.value, lastNode)
break
#print(distance, " , for node ", startingNode.value)
else:
distance += connection(cahceNode.value, lastNode)
lastNode = cahceNode.value
cahceNode = cahceNode.root
if smallestDistance > distance:
smallestDistance = distance
#DistanceIterator +=1
sum += smallestDistance
# print(smallestDistance)
print(sum)
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: ACCEPTED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 126238345 |
| user output |
|---|
| 126238345 |
Test 16
Group: 1, 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 ... |
| correct output |
|---|
| 278678 |
| user output |
|---|
| (empty) |
Test 17
Group: 1, 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 ... |
| correct output |
|---|
| 34929 |
| user output |
|---|
| (empty) |
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) |
