Problem p02871 (python)

Fixed submission:
import random

class maps(object):
    def __init__(self):
        self.readinputs()

    # recieve |V| and |E|
    def readinputs(self):
        self.V, self.E = map(int, input().split())
        self.es = [[] for i in range(self.V)]
        self.Mes = [[0]*self.V for i in range(self.V)]

        for _ in range(self.E):
            # recieve edges
            a, b, c = map(int, input().split())
            a, b = a-1, b-1
            self.es[a].append((b,c))
            self.es[b].append((a,c))
            self.Mes[a][b] = c
            self.Mes[b][a] = c

        self.T = int(input())

        # recieve info
        self.info = [[] for i in range(self.T)]
        for t in range(self.T):
            Nnew = int(input())
            for _ in range(Nnew):
                new_id, dst = map(int, input().split())
                self.info[t].append((new_id, dst))

    def random_walk(self):
        where = [('v', 0)] # ('e',from,to,dist)

        self.path = [0]*self.T
        for t in range(self.T):
            now_where = where[-1]
            if now_where[0] == 'v':
                to, dist = random.choice(self.es[now_where[1]])
                # to, dist = self.es[now_where[1]][n]
                self.path[t] = to
                if dist == 1:
                    where.append(('v', to))
                else:
                    where.append(('e', now_where[1], to, 1))
            elif now_where[0] == 'e':
                now_where = where[-1]
                # num = random.randint(0,1)
                if True :
                    self.path[t] = now_where[2]
                    if now_where[3] + 1 < self.Mes[now_where[1]][now_where[2]]:
                        where.append(('e', now_where[1], now_where[2], now_where[3] + 1))
                    elif now_where[3] + 1 == self.Mes[now_where[1]][now_where[2]]:
                        where.append(('v', now_where[2]))
                    else:
                        # ココの分岐に来ることはありえない。
                        pass

                else:
                    self.path[t] = now_where[1]
                    if now_where[3] - 1 > 0:
                        where.append(('e', now_where[1], now_where[2], now_where[3] - 1))
                    elif now_where[3] - 1 == 0:
                        where.append(('v', now_where[1]))
                    else:
                        # ココの分岐に来ることはありえない。
                        pass
            else:
                # ココの分岐に来ることはありえない。
                pass

    def output(self):
        for t in range(self.T) :
            print(self.path[t] + 1)

if __name__ == "__main__":
    M = maps()
    M.random_walk()
    M.output()

Buggy submission (verdict: Runtime Error):
import random

class maps(object):
    def __init__(self):
        with open('test.in') as f:
            self.readinputs(f)

    # recieve |V| and |E|
    def readinputs(self, file):
        self.V, self.E = map(int, file.readline().split())
        self.es = [[] for i in range(self.V)]
        self.Mes = [[0]*self.V for i in range(self.V)]

        for _ in range(self.E):
            # recieve edges
            a, b, c = map(int, file.readline().split())
            a, b = a-1, b-1
            self.es[a].append((b,c))
            self.es[b].append((a,c))
            self.Mes[a][b] = c
            self.Mes[b][a] = c

        self.T = int(file.readline())

        # recieve info
        self.info = [[] for i in range(self.T)]
        for t in range(self.T):
            Nnew = int(file.readline())
            for _ in range(Nnew):
                new_id, dst = map(int, file.readline().split())
                self.info[t].append((new_id, dst))

    def random_walk(self):
        where = [('v', 0)] # ('e',from,to,dist)

        self.path = [0]*self.T
        for t in range(self.T):
            now_where = where[-1]
            if now_where[0] == 'v':
                to, dist = random.choice(self.es[now_where[1]])
                # to, dist = self.es[now_where[1]][n]
                self.path[t] = to
                if dist == 1:
                    where.append(('v', to))
                else:
                    where.append(('e', now_where[1], to, 1))
            elif now_where[0] == 'e':
                now_where = where[-1]
                num = random.randint(0,1)

                if num == 0:
                    self.path[t] = now_where[2]
                    if now_where[3] + 1 < self.Mes[now_where[1]][now_where[2]]:
                        where.append(('e', now_where[1], now_where[2], now_where[3] + 1))
                    elif now_where[3] + 1 == self.Mes[now_where[1]][now_where[2]]:
                        where.append(('v', now_where[2]))
                    else:
                        # ココの分岐に来ることはありえない。
                        pass

                else:
                    self.path[t] = now_where[1]
                    if now_where[3] - 1 > 0:
                        where.append(('e', now_where[1], now_where[2], now_where[3] - 1))
                    elif now_where[3] - 1 == 0:
                        where.append(('v', now_where[1]))
                    else:
                        # ココの分岐に来ることはありえない。
                        pass
            else:
                # ココの分岐に来ることはありえない。
                pass

    def all_stay(self):
        self.path = [0]*self.T
        for t in range(self.T):
            self.path[t] = -1

    def output(self):
        for t in range(self.T) :
            print(self.path[t] + 1)

if __name__ == "__main__":
    M = maps()
    M.random_walk()
    M.output()