python报数组越界_Python提交遇到数组越界

class Myclass(object):

class Node(object):

def __init__(self,father,num,val,avg):

self.father=father

self.num=num

self.val=val

self.avg=avg

def make_struct(self,father,num,val,avg):

return self.Node(father,num,val,avg)

myclass=Myclass()

no=[]

line=[]

def find(n,root):

res=-1

pos=0

for i in range(1,n+1):

if i is not root and no[i].avg > res:

res=no[i].avg

pos=i

return pos

while True:

n,root=map(int,input().split())

if n==0 and root==0:

break

ans=0

line.clear()

line=list(map(int,input().split(" ")))

no.clear()

no.append(myclass.make_struct(0,0,0,0.0))

for i in range(1,n+1):

val=line[i-1]

avg=float(val)

num=1

no.append(myclass.make_struct(0,num,val,avg))

ans+=no[i].val

for i in range(1,n):

a,b=map(int,input().split())

no[b].father=a

for i in range(1,n):

f=find(n,root)

father=no[f].father

ans+=no[father].num*no[f].val

no[f].avg=-1.0

for j in range(1,n+1):

if no[j].father is f:

no[j].father=father

no[father].num+=no[f].num

no[father].val+=no[f].val

no[father].avg=no[father].val/no[father].num

print(ans)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值