import sys
input=sys.stdin.readline
print=sys.stdout.write
def _join(u,v):
u_p,v_p=_find(u),_find(v)
if u_p<v_p:v_p,u_p=u_p,v_p
if u_p==v_p:return False
cnts[u_p]+=cnts[v_p]
nums[u_p]+=nums[v_p]
parent[v_p]=u_p
return True
def _find(p):
root=p
while root!=parent[root]:
root=parent[root]
while root!=parent[p]:
t=parent[p]
parent[p]=root
p=t
return root
def find_water(node):
p=_find(node)
return nums[p]/cnts[p]
def join(l,r):
i=_find(l)
while i<r:
_join(i,i+1)
i=_find(i)
n,m=map(int,input().split())
cnts=[1]*n
parent=list(range(n))
nums=list(map(int,input().split()))
ans=[]
for _ in range(m):
op=list(map(int,input().split()))
if op[0]==1:
join(op[1]-1,op[2]-1)
continue
water=find_water(op[1]-1)
ans.append(str(water))
print("\n".join(ans))
自行理解

京公网安备 11010502036488号