Buggy python submission (verdict: Time Limit Exceeded):
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u-1, v-1))

V = 0
for l in range(N):
    for r in range(l, N):
        V += r - l + 1

E = 0
for u in range(N):
    for v in range(u, N):
        if (u, v) in A or (v, u) in A:
            E += (u + 1) * (N - v)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker


Fixed submission:
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u, v))

V = 0
for l in range(1, N + 1):
    V += (N - l + 1) * (N - l + 2) // 2

E = 0
for u, v in A:
    a = min(u, v)
    b = max(u, v)
    E += a * (N - b + 1)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker

Buggy python submission (verdict: Time Limit Exceeded):
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u-1, v-1))

V = 0
for l in range(N):
    for r in range(l, N):
        V += r - l + 1

E = 0
for u in range(N):
    for v in range(u, N):
        if (u, v) in A or (v, u) in A:
            E += (u + 1) * (N - v)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker


Fixed submission:
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u, v))

V = 0
for l in range(1, N + 1):
    V += (N - l + 1) * (N - l + 2) // 2

E = 0
for u, v in A:
    a = min(u, v)
    b = max(u, v)
    E += a * (N - b + 1)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker

Buggy python submission (verdict: Runtime Error):
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

import numpy as np

N = int(input().strip())
A = np.zeros((N, N), dtype=np.int32)

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A[u-1, v-1] = 1
    A[v-1, u-1] = 1

V = 0
for l in range(N):
    for r in range(l, N):
        V += r - l + 1

E = 0
for u in range(N):
    for v in range(u, N):
        E += (u + 1) * (N - v) * A[u, v]

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker


Fixed submission:
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u, v))

V = 0
for l in range(1, N + 1):
    V += (N - l + 1) * (N - l + 2) // 2

E = 0
for u, v in A:
    a = min(u, v)
    b = max(u, v)
    E += a * (N - b + 1)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker

Buggy python submission (verdict: Time Limit Exceeded):
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    u -= 1
    v -= 1
    A.add((u, v))

def update(cluster, l, r):

    connected_clusters = set([])

    for v in range(l, r):
        if (v, r) in A or (r, v) in A:
            connected_clusters.add(cluster[v])

    if len(connected_clusters) == 0:
        cluster[r] = max(set(cluster.values())) + 1

    elif len(connected_clusters) == 1:
        cluster[r] = connected_clusters.pop()

    else:
        cluster[r] = max(set(cluster.values())) + 1
        for v, c in cluster.items():
            if c in connected_clusters:
                cluster[v] = cluster[r]

    return cluster


S = 0
for l in range(N):

    cluster = dict()

    for r in range(l, N):

        if r == l: cluster[r] = 0
        else     : cluser = update(cluster, l, r)

        S += len(set(cluster.values()))

print(S)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker


Fixed submission:
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u, v))

V = 0
for l in range(1, N + 1):
    V += (N - l + 1) * (N - l + 2) // 2

E = 0
for u, v in A:
    a = min(u, v)
    b = max(u, v)
    E += a * (N - b + 1)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker

Buggy python submission (verdict: Time Limit Exceeded):
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    u -= 1
    v -= 1
    A.add((u, v))

def update(cluster, l, r):

    connected_clusters = set([])

    for v in range(l, r):
        if (v, r) in A or (r, v) in A:
            connected_clusters.add(cluster[v])

    if len(connected_clusters) == 0:
        cluster[r] = max(set(cluster.values())) + 1

    elif len(connected_clusters) == 1:
        cluster[r] = connected_clusters.pop()

    else:
        cluster[r] = max(set(cluster.values())) + 1
        for v, c in cluster.items():
            if c in connected_clusters:
                cluster[v] = cluster[r]

    return cluster


S = 0
for l in range(N):

    cluster = dict()

    for r in range(l, N):

        if r == l: cluster[r] = 0
        else     : cluser = update(cluster, l, r)

        S += len(set(cluster.values()))

print(S)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker


Fixed submission:
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u, v))

V = 0
for l in range(1, N + 1):
    V += (N - l + 1) * (N - l + 2) // 2

E = 0
for u, v in A:
    a = min(u, v)
    b = max(u, v)
    E += a * (N - b + 1)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker

Buggy python submission (verdict: Runtime Error):
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

import numpy as np

N = int(input().strip())
A = np.zeros((N, N), dtype=np.int64)
x = np.array(range(N))

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A[u-1, v-1] = 1
    A[v-1, u-1] = 1

def update(cluster, l, r):

    connected = set([])

    for v in range(l, r):
        if A[v, r] > 0:
            connected.add(cluster[v])

    if len(connected) == 0:
        cluster[r] = max(set(cluster.values())) + 1

    elif len(connected) == 1:
        cluster[r] = connected.pop()

    else:
        cluster[r] = max(set(cluster.values())) + 1
        for v, c in cluster.items():
            if c in connected:
                cluster[v] = cluster[r]

    return cluster


S = 0
for l in range(N):

    cluster = {}

    for r in range(l, N):

        if r == l: cluster[r] = 0
        else     : cluser = update(cluster, l, r)

        S += len(set(cluster.values()))

print(S)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker


Fixed submission:
#!/usr/bin/env python3
#
# Author: Tetsuya Ishikawa <tiskw111@gmail.com>
# Date  : July 05, 2020
##################################################### SOURCE START #####################################################

N = int(input().strip())
A = set([])

for _ in range(N - 1):
    u, v = tuple(map(int, input().strip().split()))
    A.add((u, v))

V = 0
for l in range(1, N + 1):
    V += (N - l + 1) * (N - l + 2) // 2

E = 0
for u, v in A:
    a = min(u, v)
    b = max(u, v)
    E += a * (N - b + 1)

print(V - E)

##################################################### SOURCE FINISH ####################################################
# vim: expandtab tabstop=4 shiftwidth=4 fdm=marker