Language: C++

import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
sys.setrecursionlimit(10**8)
INF = float('inf')
MOD = 10**9+7
def lcm(a, b):
  return a*b//gcd(a, b)

class UnionFind():
  def __init__(self, n):
    self.n = n
    self.parents = [-1] * n
    
  def find(self, x):
    if self.parents[x] < 0:
      return x
    else:
      self.parents[x] = self.find(self.parents[x])
      return self.parents[x]
  
  def union(self, x, y):
    x = self.find(x)
    y = self.find(y)
    
    if x == y:
      return
    
    if self.parents[x] > self.parents[y]:
      x, y = y, x
    
    self.parents[x] += self.parents[y]
    self.parents[y] = x
  
  #xが属するグループに含まれる要素数(サイズ)を返す
  def size(self, x):
    return -self.parents[self.find(x)]
  
  def same(self, x, y):
    return self.find(x) == self.find(y)
  
  def members(self, x):
    root = self.find(x)
    return [i for i in range(self.n) if self.find(i) == root]
  
  def roots(self):
    return [i for i, x in enumerate(self.parents) if x < 0]
  
  def group_count(self):
    return len(self.roots)
  
  #根と根の下に属する要素のリスト辞書を返す
  def all_group_members(self):
    return {r: self.members(r) for r in self.roots()}

  def __str__(self):
    return '\n'.join('{}: {}'.format(r, self.members(r)) for r in self.roots())

def main():
  n, m, k = map(int, input().split())
  deg = [0]*n
  ans = [0]*n
  uf = UnionFind(n)
  for _ in range(m):
    a, b = map(int, input().split())
    a -= 1
    b -= 1
    deg[a] += 1
    deg[b] += 1
    uf.union(a, b)
  
  for _ in range(k):
    c, d = map(int, input().split())
    c -= 1
    d -= 1
    if uf.same(c,d):
      deg[c] += 1
      deg[d] += 1
  
  for i in range(n):
    ans[i] = uf.size(i) - 1 -deg[i]
  
  print(' '.join(map(str, ans)))
  
if __name__ == '__main__':
  main()

Compiler output:
a.cc:6:13: warning: multi-character character constant [-Wmultichar]
    6 | INF = float('inf')
      |             ^~~~~
a.cc:36:4: error: invalid preprocessing directive #x\U0000304c\U00005c5e\U00003059\U0000308b\U000030b0\U000030eb\U000030fc\U000030d7\U0000306b\U0000542b\U0000307e\U0000308c\U0000308b\U00008981\U00007d20\U00006570
   36 |   #xが属するグループに含まれる要素数(サイズ)を返す
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:53:4: error: invalid preprocessing directive #\U00006839\U00003068\U00006839\U0000306e\U00004e0b\U0000306b\U00005c5e\U00003059\U0000308b\U00008981\U00007d20\U0000306e\U000030ea\U000030b9\U000030c8\U00008f9e\U000066f8\U00003092\U00008fd4\U00003059
   53 |   #根と根の下に属する要素のリスト辞書を返す
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:58:22: warning: multi-character literal with 6 characters exceeds 'int' size of 4 bytes
   58 |     return '\n'.join('{}: {}'.format(r, self.members(r)) for r in self.roots())
      |                      ^~~~~~~~
a.cc:86:16: warning: multi-character literal with 8 characters exceeds 'int' size of 4 bytes
   86 | if __name__ == '__main__':
      |                ^~~~~~~~~~
a.cc:1:1: error: 'import' does not name a type
    1 | import sys
      | ^~~~~~
a.cc:1:1: note: C++20 'import' only available with '-fmodules-ts'
a.cc:57:3: error: 'def' does not name a type
   57 |   def __str__(self):
      |   ^~~