Buggy python submission (verdict: Runtime Error):
import array
#import random
import sys

#N, M = 100000, 100000
N, M = list(map(int, input().split()))
R = [[] for _ in range(N+1)]
sys.setrecursionlimit(200000)

def grp(R, i, S):
    S[i] = True
    ret = 1
    for j in range(len(R[i])):
        if S[ R[i][j] ]: continue
        ret += grp(R, R[i][j], S)
    return ret

for i in range(M):
    a, b = list(map(int, input().split()))
#    a, b = random.choice(range(N)), random.choice(range(N))
    R[a].append(b)
    R[b].append(a)

S = [False] * (N+1)
maxgrp = 1
for i in range(1, N+1):
    if S[i]: continue
    grpsize = grp(R, i, S)
#    print (grpsize)
    maxgrp = max(grpsize, maxgrp)

print(maxgrp)


Fixed submission:
#import array
#import random
#import sys

#N, M = 200000, 200000
N, M = list(map(int, input().split()))
R = [[] for _ in range(N+1)]
G = [0] * (N+1)
Z = [0] * (N+1)

def grp(R, grpid, i, G, Z):
    stack = [i]
    while len(stack) > 0:
        k = stack.pop()
        if G[k] > 0: continue
        G[k] = grpid
        Z[grpid] += 1
        for l in range(len(R[k])):
            stack.append(R[k][l])
        
for i in range(M):
    a, b = list(map(int, input().split()))
#    a, b = random.choice(range(N)), random.choice(range(N))
    R[a].append(b)
    R[b].append(a)

grpid = 0
for i in range(1, N+1):
    if G[i] > 0: continue
    grpid += 1
    grp(R, grpid, i, G, Z)
    
Z.sort(reverse=True)
print(Z[0])

Buggy python submission (verdict: Runtime Error):
import array

N, M = list(map(int, input().split()))
R = [[] for _ in range(N+1)]

def grp(R, i, S):
    S[i] = True
    ret = 1
    for j in range(len(R[i])):
        if S[ R[i][j] ]: continue
        ret += grp(R, R[i][j], S)
    return ret

for i in range(M):
    a, b = list(map(int, input().split()))
    R[a].append(b)
    R[b].append(a)

S = [False] * (N+1)
maxgrp = 1
for i in range(1, N+1):
    if S[i]: continue
    grpsize = grp(R, i, S)
#    print (grpsize)
    maxgrp = max(grpsize, maxgrp)

print(maxgrp)


Fixed submission:
#import array
#import random
#import sys

#N, M = 200000, 200000
N, M = list(map(int, input().split()))
R = [[] for _ in range(N+1)]
G = [0] * (N+1)
Z = [0] * (N+1)

def grp(R, grpid, i, G, Z):
    stack = [i]
    while len(stack) > 0:
        k = stack.pop()
        if G[k] > 0: continue
        G[k] = grpid
        Z[grpid] += 1
        for l in range(len(R[k])):
            stack.append(R[k][l])
        
for i in range(M):
    a, b = list(map(int, input().split()))
#    a, b = random.choice(range(N)), random.choice(range(N))
    R[a].append(b)
    R[b].append(a)

grpid = 0
for i in range(1, N+1):
    if G[i] > 0: continue
    grpid += 1
    grp(R, grpid, i, G, Z)
    
Z.sort(reverse=True)
print(Z[0])

Buggy python submission (verdict: Runtime Error):
import array

N, M = list(map(int, input().split()))
R = [[] for _ in range(N+1)]

def grp(R, i, S):
    S[i] = True
    ret = 1
    for j in range(len(R[i])):
        if S[ R[i][j] ]: continue
        ret += grp(R, R[i][j], S)
    return ret

for i in range(M):
    a, b = list(map(int, input().split()))
    R[a].append(b)
    R[b].append(a)

S = [False] * (N+1)
maxgrp = 1
for i in range(N):
    if S[i]: continue
    grpsize = grp(R, i, S)
#    print (grpsize)
    maxgrp = max(grpsize, maxgrp)

print(maxgrp)

Fixed submission:
#import array
#import random
#import sys

#N, M = 200000, 200000
N, M = list(map(int, input().split()))
R = [[] for _ in range(N+1)]
G = [0] * (N+1)
Z = [0] * (N+1)

def grp(R, grpid, i, G, Z):
    stack = [i]
    while len(stack) > 0:
        k = stack.pop()
        if G[k] > 0: continue
        G[k] = grpid
        Z[grpid] += 1
        for l in range(len(R[k])):
            stack.append(R[k][l])
        
for i in range(M):
    a, b = list(map(int, input().split()))
#    a, b = random.choice(range(N)), random.choice(range(N))
    R[a].append(b)
    R[b].append(a)

grpid = 0
for i in range(1, N+1):
    if G[i] > 0: continue
    grpid += 1
    grp(R, grpid, i, G, Z)
    
Z.sort(reverse=True)
print(Z[0])