#include <bits/stdc++.h>
using namespace std;
int N, M, K;
int *A = new int[100000];
int *B = new int[100000];
int *C = new int[100000];
int *D = new int[100000];
int *NF = new int[100000];
bool *VD = new bool[100000];
void mark(int n, bool *mk) {
  if (mk[n] == true || VD[n] == true) {
    return;
  } else {
    mk[n] = true;
  }
  for (int m = 0; m < M; m++) {
    if (A[m] == n) {
      mark(B[m], mk);
    } else if (B[m] == n) {
      mark(A[m], mk);
    }
  }
}
void cmark(int n) {
  bool *mk = new bool[100000];
  for (int i = 0; i < N; i++) {
    mk[i] = false;
  }
  mark(n, mk);
  int num = 0;
  for (int n = 0; n < N; n++) {
    if (mk[n] == true) {
      num++;
      VD[n] = true;
    }
  }
  for (int n = 0; n < N; n++) {
    if (mk[n] == true) {
      NF[n] = num - 1;
    }
  }
  for (int m = 0; m < M; m++) {
    if (mk[A[m]] == true && mk[B[m]] == true) {
      NF[A[m]] -= 1;
      NF[B[m]] -= 1;
    }
  }
  for (int k = 0; k < K; k++) {
    if (mk[C[k]] == true && mk[D[k]] == true) {
      NF[C[k]] -= 1;
      NF[D[k]] -= 1;
    }
  }
}
int main() {
  cin >> N >> M >> K;
  for (int m = 0; m < M; m++) {
    cin >> A[m] >> B[m];
    A[m] -= 1;
    B[m] -= 1;
  }
  for (int k = 0; k < K; k++) {
    cin >> C[k] >> D[k];
    C[k] -= 1;
    D[k] -= 1;
  }
  for (int n = 0; n < N; n++) {
    VD[n] = false;
  }
  for (int n = 0; n < N; n++) {
    if (VD[n] == false) {
      cmark(n);
    }
  }
  for (int n = 0; n < N; n++) {
    cout << NF[n] << " ";
  }
  return 0;
}
