Problem:
Score : 400 points

Problem Statement

An SNS has N users - User 1, User 2, \cdots, User N.

Between these N users, there are some relationships - M friendships and K blockships.

For each i = 1, 2, \cdots, M, there is a bidirectional friendship between User A_i and User B_i.

For each i = 1, 2, \cdots, K, there is a bidirectional blockship between User C_i and User D_i.

We define User a to be a friend candidate for User b when all of the following four conditions are satisfied:

a \neq b.

There is not a friendship between User a and User b.

There is not a blockship between User a and User b.

There exists a sequence c_0, c_1, c_2, \cdots, c_L consisting of integers between 1 and N (inclusive) such that c_0 = a, c_L = b, and there is a friendship between User c_i and c_{i+1} for each i = 0, 1, \cdots, L - 1.

For each user i = 1, 2, ... N, how many friend candidates does it have?

Constraints

All values in input are integers.

2 ≤ N ≤ 10^5

0 \leq M \leq 10^5

0 \leq K \leq 10^5

1 \leq A_i, B_i \leq N

A_i \neq B_i

1 \leq C_i, D_i \leq N

C_i \neq D_i

(A_i, B_i) \neq (A_j, B_j) (i \neq j)

(A_i, B_i) \neq (B_j, A_j)

(C_i, D_i) \neq (C_j, D_j) (i \neq j)

(C_i, D_i) \neq (D_j, C_j)

(A_i, B_i) \neq (C_j, D_j)

(A_i, B_i) \neq (D_j, C_j)

Input

Input is given from Standard Input in the following format:

N M K
A_1 B_1
\vdots
A_M B_M
C_1 D_1
\vdots
C_K D_K

Output

Print the answers in order, with space in between.

Sample Input 1

4 4 1
2 1
1 3
3 2
3 4
4 1

Sample Output 1

0 1 0 1

There is a friendship between User 2 and 3, and between 3 and 4. Also, there is no friendship or blockship between User 2 and 4. Thus, User 4 is a friend candidate for User 2.

However, neither User 1 or 3 is a friend candidate for User 2, so User 2 has one friend candidate.

Sample Input 2

5 10 0
1 2
1 3
1 4
1 5
3 2
2 4
2 5
4 3
5 3
4 5

Sample Output 2

0 0 0 0 0

Everyone is a friend of everyone else and has no friend candidate.

Sample Input 3

10 9 3
10 1
6 7
8 2
2 5
8 4
7 3
10 9
6 4
5 8
2 6
7 5
3 1

Sample Output 3

1 3 5 4 3 3 3 3 1 0

Solution in Common Lisp (SBCL 1.1.14) (judge verdict: Accepted)

;; D - Friend Suggestions

(defun solve (n m k ab cd)
  (let ((adj  (make-array n :initial-element nil))
        (conn (make-array n :initial-element nil))
        (nblock (make-array n :initial-element 0)))
    ; 連結リスト
    (loop for (a . b) in ab
      do (setf (aref adj (1- a)) (cons (1- b) (aref adj (1- a))))
         (setf (aref adj (1- b)) (cons (1- a) (aref adj (1- b)))))
    ; 連結成分
    (loop for a below n
      unless (aref conn a)
        do (find-connected-component a conn adj))
    ; 同じ連結成分内のブロック関係の数
    (loop for (c . d) in cd
      when (gethash (1- c) (cdr (aref conn (1- d)))) ; 同じ連結成分
        do (incf (aref nblock (1- c)))
           (incf (aref nblock (1- d))))
    ; 友達候補 = 連結成分 - 自分 - 友達関係 - ブロック関係
    (loop for a below n
      collect (- (car (aref conn a)) 1 (length (aref adj a))
                 (aref nblock a)))))

(defun find-connected-component (a conn adj)
  (setf (aref conn a) (cons 0 (make-hash-table)))
  (labels ((dfs (queue)
             (when queue
               (let ((x    (car queue))
                     (rest (cdr queue)))
                 (unless (gethash x (cdr (aref conn a)))
                   (setf (gethash x (cdr (aref conn a))) t)
                   (incf (car (aref conn a)))
                   (setf (aref conn x) (aref conn a))
                   (setf rest (append (aref adj x) rest)))
                 (dfs rest)))))
    (dfs (list a))))

(defun main ()
  (let* ((n (read))
         (m (read))
         (k (read))
         (ab (loop repeat m collect (cons (read) (read))))
         (cd (loop repeat k collect (cons (read) (read)))))
    (format t "~{~a~^ ~}~%" (solve n m k ab cd))))

(main)