#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
bool *seen;
void dfp(Graph &G, int v, int *count) {
  *count = *count + 1;
  seen[v] = true;
  for (auto next_v : G[v]) {
    if (!seen[next_v]) {
      dfp(G, next_v, count);
    }
  }
}
int main() {
  int N, M, K;
  cin >> N >> M >> K;
  Graph fr(N + 1);
  Graph br(N + 1);
  seen = new bool(N + 1);
  bool copy[N + 1];
  for (int i = 0; i < N + 1; i++) {
    seen[i] = false;
    copy[i] = false;
  }
  for (int i = 0; i < M; i++) {
    int a, b;
    cin >> a >> b;
    fr[a].push_back(b);
    fr[b].push_back(a);
  }
  for (int i = 0; i < K; i++) {
    int a, b;
    cin >> a >> b;
    br[a].push_back(b);
    br[b].push_back(a);
  }
  for (int i = 1; i < N + 1; i++) {
    int cose = 0;
    dfp(fr, i, &cose);
    int cobr = 0;
    for (auto brack : br[i]) {
      if (seen[brack]) {
        cobr++;
      }
    }
    int cofr = 0;
    for (auto brack : fr[i]) {
      if (seen[brack]) {
        cofr++;
      }
    }
    memcpy(seen, copy, (N + 1) * sizeof(bool));
    cout << cose - cofr - cobr - 1 << "  ";
  }
  return 0;
}
