Buggy python submission (verdict: Runtime Error):
def root(x):#親のrootはマイナスのサイズ、子のrootは親のindex
  if par[x]<0:
    return x
  else:
    par[x]=root(par[x])
    return par[x]

def unit(x,y):#xとyをくっつける
  rx=root(x)
  ry=root(y)
  if rx==ry:
    return False
  if par[rx]>par[ry]:#親のサイズの大小比較
    rx,ry=ry,rx#xのサイズのほうが大きくする
  par[rx]+=par[ry]#xのサイズにyのサイズを足す(サイズの変換)
  par[ry]=x#親じゃなくなったroot(y)の値をxの根にする
  return True
 
def same(x,y):
  rx=root(x)
  ry=root(y)
  return rx==ry#真偽を返す
 
def size(x):
  return -par[root(x)]#親のrootはマイナスのサイズなため
 
N,M,K=map(int,input().split())
par=[-1]*N
deg=[0]*N
bro=[[]*N for i in range(N)]
for i in range(M):
  a,b=map(int,input().split())
  a-=1
  b-=1
  deg[a]+=1
  deg[b]+=1
  unit(a,b)
for j in range(K):
  c,d=map(int,input().split())
  c-=1
  d-=1
  bro[c].append(d)
  bro[d].append(c)

for q in range(N):
  ans=size(q)-deg[q]-1
  for w in bro[q]:
    if same(q,w):
      ans-=1
  print(ans,end=" ")

Fixed submission:
class Union_Find():
    def __init__(self,n):
        self.n=n
        self.par=[-1]*n
    def root(self,x):
        if self.par[x]<0:
            return x
        else:
            self.par[x]=self.root(self.par[x])
            return self.par[x]
    def union(self,x,y):
        rx=self.root(x)
        ry=self.root(y)
        if rx==ry:
            return
        if self.par[rx]>self.par[ry]:
            rx,ry=ry,rx
        self.par[rx]+=self.par[ry]
        self.par[ry]=rx

    def size(self,x):
        return -self.par[self.root(x)]

    def same(self,x,y):
        return self.root(x)==self.root(y)
N,M,K=map(int,input().split())
deg=[0]*N
bro=[[]*N for _ in range(N)]
uf=Union_Find(N)
for i in range(M):
    a,b=map(int,input().split())
    a-=1
    b-=1
    deg[a]+=1
    deg[b]+=1
    uf.union(a,b)
for j in range(K):
    a,b=map(int,input().split())
    a-=1
    b-=1
    bro[a].append(b)
    bro[b].append(a)

for q in range(N):
    ans=uf.size(q)-deg[q]-1
    for w in bro[q]:
        if uf.same(q,w):
            ans-=1
    print(ans,end=" ")

Buggy python submission (verdict: Runtime Error):
def root(x):#親のrootはマイナスのサイズ、子のrootは親のindex
  if par[x]<0:
    return x
  else:
    return par[x]=root(par[x])

def unit(x,y):#xとyをくっつける
  rx=root(x)
  ry=root(y)
  if rx==ry:
    return False
  if par[rx]>par[ry]:#親のサイズの大小比較
    rx,ry=ry,rx#xのサイズのほうが大きくする
  par[rx]+=par[ry]#xのサイズにyのサイズを足す(サイズの変換)
  par[ry]=x#親じゃなくなったroot(y)の値をxの根にする
  return True

def same(x,y):
  rx=root(x)
  ry=root(y)
  return rx==ry#真偽を返す

def size(x):
  return -par[root(x)]#親のrootはマイナスのサイズなため

N,M,K=map(int,input().split())
par=[-1]*N
deg=[0]*N
bro=[[]*N for i in range(N)]
for i in range(M):
  a,b=map(int,input().split())
  a-=1
  b-=1
  deg[a]+=1
  deg[b]+=1
  unit(a,b)
for i in range(K):
  a,b=map(int,input().split())
  a-=1
  b-=1
  bro[a].append(b)
  bro[b].append(a)

for i in range(N):
  ans=size[i]-deg[i]-1
  for j in bro[i]:
    if same(i,j):
      ans-=1
  print(ans,end=" ")


Fixed submission:
class Union_Find():
    def __init__(self,n):
        self.n=n
        self.par=[-1]*n
    def root(self,x):
        if self.par[x]<0:
            return x
        else:
            self.par[x]=self.root(self.par[x])
            return self.par[x]
    def union(self,x,y):
        rx=self.root(x)
        ry=self.root(y)
        if rx==ry:
            return
        if self.par[rx]>self.par[ry]:
            rx,ry=ry,rx
        self.par[rx]+=self.par[ry]
        self.par[ry]=rx

    def size(self,x):
        return -self.par[self.root(x)]

    def same(self,x,y):
        return self.root(x)==self.root(y)
N,M,K=map(int,input().split())
deg=[0]*N
bro=[[]*N for _ in range(N)]
uf=Union_Find(N)
for i in range(M):
    a,b=map(int,input().split())
    a-=1
    b-=1
    deg[a]+=1
    deg[b]+=1
    uf.union(a,b)
for j in range(K):
    a,b=map(int,input().split())
    a-=1
    b-=1
    bro[a].append(b)
    bro[b].append(a)

for q in range(N):
    ans=uf.size(q)-deg[q]-1
    for w in bro[q]:
        if uf.same(q,w):
            ans-=1
    print(ans,end=" ")

Buggy python submission (verdict: Runtime Error):
N,M,K=map(int,input().split())
c=[[0 for _ in range(N)]for __ in range(N)]
d=[0]*N
for ___ in range(M):
  a,b=int(input().split())
print(a)

Fixed submission:
class Union_Find():
    def __init__(self,n):
        self.n=n
        self.par=[-1]*n
    def root(self,x):
        if self.par[x]<0:
            return x
        else:
            self.par[x]=self.root(self.par[x])
            return self.par[x]
    def union(self,x,y):
        rx=self.root(x)
        ry=self.root(y)
        if rx==ry:
            return
        if self.par[rx]>self.par[ry]:
            rx,ry=ry,rx
        self.par[rx]+=self.par[ry]
        self.par[ry]=rx

    def size(self,x):
        return -self.par[self.root(x)]

    def same(self,x,y):
        return self.root(x)==self.root(y)
N,M,K=map(int,input().split())
deg=[0]*N
bro=[[]*N for _ in range(N)]
uf=Union_Find(N)
for i in range(M):
    a,b=map(int,input().split())
    a-=1
    b-=1
    deg[a]+=1
    deg[b]+=1
    uf.union(a,b)
for j in range(K):
    a,b=map(int,input().split())
    a-=1
    b-=1
    bro[a].append(b)
    bro[b].append(a)

for q in range(N):
    ans=uf.size(q)-deg[q]-1
    for w in bro[q]:
        if uf.same(q,w):
            ans-=1
    print(ans,end=" ")