from collections import Counter,defaultdict,deque

from bisect import bisect_left

import sys,math,itertools,pprint,fractions

sys.setrecursionlimit(10**8)

mod = 10**9+7

INF = float('inf')

def inp(): return int(sys.stdin.readline())

def inpl(): return list(map(int, sys.stdin.readline().split()))



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



    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())



n,m,k = inpl()

ab = [inpl() for i in range(m)]

cd = [inpl() for i in range(k)]

uf = UnionFind(n)

fr = [[] for i in range(n)]

bl = [[] for i in range(n)]

for i in range(m):

    a,b = ab[i]

    fr[a-1].append(b-1)

    fr[b-1].append(a-1)

    uf.union(a-1,b-1)

for i in range(k):

    c,d = cd[i]

    bl[c-1].append(d-1)

    bl[d-1].append(c-1)

# print(fr,bl)

for i in range(n):

    s = set()

    cnt = 0

    for j in fr[i]:

        s.add(j)

    for j in bl[i]:

        if uf.same(i,j) and not j in s:

            cnt += 1

    print((uf.size(i)-1 - len(s) - cnt))

# print(uf.members(0))
from collections import Counter,defaultdict,deque

from heapq import heappop,heappush

from bisect import bisect_left,bisect_right 

import sys,math,itertools,fractions,pprint

sys.setrecursionlimit(10**8)

mod = 10**9+7

INF = float('inf')

def inp(): return int(sys.stdin.readline())

def inpl(): return list(map(int, sys.stdin.readline().split()))



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



    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()}





n,m,k = inpl()

uf = UnionFind(n)

fr = [[] for _ in range(n)]

frs = [set() for _ in range(n)]

bl = [[] for _ in range(n)]

for _ in range(m):

    a,b = inpl()

    a,b = a-1,b-1

    fr[a].append(b)

    fr[b].append(a)

    frs[a].add(b)

    frs[b].add(a)

    uf.union(a,b)

for _ in range(k):

    a,b = inpl()

    a,b = a-1,b-1

    bl[a].append(b)

    bl[b].append(a)



for i in range(n):

    re = 0

    for j in bl[i]:

        if uf.same(i,j) and not j in frs[i]:

            re += 1

    print((uf.size(i) - len(fr[i]) - re - 1))

    
from collections import Counter, defaultdict, deque
from bisect import bisect_left
import sys, math, itertools, pprint, fractions

sys.setrecursionlimit(10**8)
mod = 10**9 + 7
INF = float("inf")


def inp():
    return int(sys.stdin.readline())


def inpl():
    return list(map(int, sys.stdin.readline().split()))


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

    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())


n, m, k = inpl()
ab = [inpl() for i in range(m)]
cd = [inpl() for i in range(k)]
uf = UnionFind(n)
fr = [[] for i in range(n)]
bl = [[] for i in range(n)]
for i in range(m):
    a, b = ab[i]
    fr[a - 1].append(b - 1)
    fr[b - 1].append(a - 1)
    uf.union(a - 1, b - 1)
for i in range(k):
    c, d = cd[i]
    bl[c - 1].append(d - 1)
    bl[d - 1].append(c - 1)
# print(fr,bl)
for i in range(n):
    s = set()
    cnt = 0
    for j in fr[i]:
        s.add(j)
    for j in bl[i]:
        if uf.same(i, j) and not j in s:
            cnt += 1
    print((uf.size(i) - 1 - len(s) - cnt))
# print(uf.members(0))

from collections import Counter, defaultdict, deque
from heapq import heappop, heappush
from bisect import bisect_left, bisect_right
import sys, math, itertools, fractions, pprint

sys.setrecursionlimit(10**8)
mod = 10**9 + 7
INF = float("inf")


def inp():
    return int(sys.stdin.readline())


def inpl():
    return list(map(int, sys.stdin.readline().split()))


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

    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()}


n, m, k = inpl()
uf = UnionFind(n)
fr = [[] for _ in range(n)]
frs = [set() for _ in range(n)]
bl = [[] for _ in range(n)]
for _ in range(m):
    a, b = inpl()
    a, b = a - 1, b - 1
    fr[a].append(b)
    fr[b].append(a)
    frs[a].add(b)
    frs[b].add(a)
    uf.union(a, b)
for _ in range(k):
    a, b = inpl()
    a, b = a - 1, b - 1
    bl[a].append(b)
    bl[b].append(a)
for i in range(n):
    re = 0
    for j in bl[i]:
        if uf.same(i, j) and not j in frs[i]:
            re += 1
    print((uf.size(i) - len(fr[i]) - re - 1))

-from bisect import bisect_left -import sys, math, itertools, pprint, fractions +from heapq import heappop, heappush +from bisect import bisect_left, bisect_right +import sys, math, itertools, fractions, pprint -    # 根を返す +    def all_group_members(self): +        return {r: self.members(r) for r in self.roots()} + -ab = [inpl() for i in range(m)] -cd = [inpl() for i in range(k)] -fr = [[] for i in range(n)] -bl = [[] for i in range(n)] -for i in range(m): -    a, b = ab[i] -    fr[a - 1].append(b - 1) -    fr[b - 1].append(a - 1) -    uf.union(a - 1, b - 1) -for i in range(k): -    c, d = cd[i] -    bl[c - 1].append(d - 1) -    bl[d - 1].append(c - 1) -# print(fr,bl) +fr = [[] for _ in range(n)] +frs = [set() for _ in range(n)] +bl = [[] for _ in range(n)] +for _ in range(m): +    a, b = inpl() +    a, b = a - 1, b - 1 +    fr[a].append(b) +    fr[b].append(a) +    frs[a].add(b) +    frs[b].add(a) +    uf.union(a, b) +for _ in range(k): +    a, b = inpl() +    a, b = a - 1, b - 1 +    bl[a].append(b) +    bl[b].append(a) -    s = set() -    cnt = 0 -    for j in fr[i]: -        s.add(j) +    re = 0 -        if uf.same(i, j) and not j in s: -            cnt += 1 -    print((uf.size(i) - 1 - len(s) - cnt)) -# print(uf.members(0)) +        if uf.same(i, j) and not j in frs[i]: +            re += 1 +    print((uf.size(i) - len(fr[i]) - re - 1))