Problem:
 Score : 400 points    Problem Statement Takahashi will play a game using a piece on an array of squares numbered 1, 2, \cdots, N . Square i has an integer C_i written on it. Also, he is given a permutation of 1, 2, \cdots, N : P_1, P_2, \cdots, P_N .  Now, he will choose one square and place the piece on that square. Then, he will make the following move some number of times between 1 and K (inclusive):   In one move, if the piece is now on Square i  (1 \leq i \leq N) , move it to Square P_i . Here, his score increases by C_{P_i} .   Help him by finding the maximum possible score at the end of the game. (The score is 0 at the beginning of the game.)      Constraints  2 \leq N \leq 5000  1 \leq K \leq 10^9  1 \leq P_i \leq N  P_i \neq i  P_1, P_2, \cdots, P_N are all different.  -10^9 \leq C_i \leq 10^9  All values in input are integers.         Input Input is given from Standard Input in the following format:  N  K  P_1  P_2  \cdots  P_N  C_1  C_2  \cdots  C_N       Output Print the maximum possible score at the end of the game.        Sample Input 1 5 2
2 4 5 1 3
3 4 -10 -8 8      Sample Output 1 8  When we start at some square of our choice and make at most two moves, we have the following options:   If we start at Square 1 , making one move sends the piece to Square 2 , after which the score is 4 . Making another move sends the piece to Square 4 , after which the score is 4 + (-8) = -4 .  If we start at Square 2 , making one move sends the piece to Square 4 , after which the score is -8 . Making another move sends the piece to Square 1 , after which the score is -8 + 3 = -5 .  If we start at Square 3 , making one move sends the piece to Square 5 , after which the score is 8 . Making another move sends the piece to Square 3 , after which the score is 8 + (-10) = -2 .  If we start at Square 4 , making one move sends the piece to Square 1 , after which the score is 3 . Making another move sends the piece to Square 2 , after which the score is 3 + 4 = 7 .  If we start at Square 5 , making one move sends the piece to Square 3 , after which the score is -10 . Making another move sends the piece to Square 5 , after which the score is -10 + 8 = -2 .   The maximum score achieved is 8 .       Sample Input 2 2 3
2 1
10 -7      Sample Output 2 13       Sample Input 3 3 3
3 1 2
-1000 -2000 -3000      Sample Output 3 -1000  We have to make at least one move.       Sample Input 4 10 58
9 1 6 7 8 4 3 2 10 5
695279662 988782657 -119067776 382975538 -151885171 -177220596 -169777795 37619092 389386780 980092719      Sample Output 4 29507023469  The absolute value of the answer may be enormous.

Solution (Python):

"""

import numpy as np
i4 = np.int32
i8 = np.int64


def solve_core(a, n, u):
    cs = np.empty(n + u, i8)
    cs[0] = a[0]
    for i in range(1, n + u):
        cs[i] = cs[i - 1] + a[i]
    base = 0
    max_index = -1
    res = -1000000000
    for i in range(n):
        if max_index < i:
            max_value = -10000000000000
            max_index = i
            for j in range(i, i + u):
                if cs[j] >= max_value:
                    max_value = cs[j]
                    max_index = j
        else:
            if max_value <= cs[i + u - 1]:
                max_value = cs[i + u - 1]
                max_index = i + u - 1
        res = max(res, max_value - base)
        base = cs[i]
    return res


def solve(n, k, p, c):
    mark = np.zeros_like(p)
    cwork = np.empty(n * 2, i8)

    ans = -1000000000
    for i in range(n):
        if mark[i] == 1:
            continue

        cwork[0] = c[i]
        mark[i] = 1
        m = 1
        j = p[i]
        while j != i:
            cwork[m] = c[j]
            mark[j] = 1
            m += 1
            j = p[j]

        cwork[m: 2 * m] = cwork[: m]
        if k <= m:
            res = solve_core(cwork, m, k)
        else:
            t = np.sum(cwork[: m])
            if t > 0:
                r = k // m
                s = k % m
                res = t * (r - 1) + solve_core(cwork, m, m)
                if s > 0:
                    res2 = t * r + solve_core(cwork, m, s)
                    res = max(res, res2)
            else:
                res = solve_core(cwork, m, m - 1)
        ans = max(ans, res)
    return ans


def main(file_in):
    f = open(file_in)
    n, k = [int(x) for x in f.readline().split()]
    p = np.array([int(x) - 1 for x in f.readline().split()])
    c = np.array([int(x) for x in f.readline().split()])
    ans = solve(n, k, p, c)
    return ans


def main2():
    ans = main('/dev/stdin')
    print(ans)
"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'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'
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)

Solution (Python):
n,K=map(int,input().split())
p=list(map(lambda x:int(x)-1,input().split()))
c=list(map(int,input().split()))
if K == 1:
    print(max(c));exit()
ans = -10**10
def cycle(k):
    mo=k
    clen=0
    cscore=0
    flg = True
    cmax=[-10**10]
    while (mo != k or flg):
        clen+=1
        cscore+=c[mo]
        mo = p[mo]
        cmax.append(max(cmax[-1],cscore))
        if mo == k:
            flg = False
    if cscore<0:
        return cmax[min(K-1,clen-1)],cmax
    return cscore*((K-1)//clen)+cmax[(K-1)%clen+1],cmax
for i in range(n):
    a,l=cycle(i)
    if a>ans:
        ans = a
print(ans)

Solution (Python):
def main():
    N, K = map(int, input().split())
    P = list(map(lambda x: int(x)-1, input().split()))
    C = list(map(int, input().split()))
    loop = [0] * N
    loopsum = [0] * N
    for i in range(N):
        if loop[i] > 0:
            continue
        cnt = 0
        cur = i
        visited = set()
        score = 0
        while cur not in visited:
            visited.add(cur)
            cnt += 1
            cur = P[cur]
            score += C[cur]
        for v in visited:
            loop[v] = cnt
            loopsum[v] = score
    ans = max(C)
    for i in range(N):
        if loopsum[i] >= 0 and loop[i] <= K:
            score = loopsum[i] * (K // loop[i] - 1)
            limit = K % loop[i] + loop[i]
        else:
            score = 0
            limit = min(loop[i], K)
        cur = i
        for _ in range(limit):
            cur = P[cur]
            score += C[cur]
            ans = max(ans, score)
    print(ans)


if __name__ == "__main__":
    main()

Solution (Python):


N, K = map(int, input().split())
P = list(map(int, input().split()))
C = list(map(int, input().split()))

for i in range(N):
  P[i] -= 1  

visit = [False for _ in range(N)]
loops = []

for i in range(N):
  if visit[i]:
    continue
  now = i
  loop = [C[now]]
  visit[now] = True
  while not visit[P[now]]:
    now = P[now]
    loop.append(C[now])
    visit[now] = True
  loops.append(loop)

ans = -float("inf")
for loop in loops:
  n = len(loop)
  r = K%n
  m = K//n
  if r==0:
    r = n
    m -= 1
  suml = sum(loop)
  if K > n and suml <= 0:
    r = n
    m = 0
  cumsum = [0] + loop + loop[:r-1]
  for i in range(n+r-1):
    cumsum[i+1] = cumsum[i] + cumsum[i+1]
  maxC = -float("inf")
  for i in range(n):
    for j in range(i+1, i+r+1):
      maxC = max(maxC, cumsum[j]-cumsum[i])
  ans = max(ans, maxC + suml*m)
print(ans)