#include <bits/stdc++.h>
typedef struct Person {
  std::vector<int> friends;
  std::vector<int> blocks;
  int index;
} Person_t;
template <typename T>
bool in_vector(std::vector<T> v, T x) {
  auto i = std::find(v.begin(), v.end(), x);
  return i != v.end();
}
void list_nets(Person_t persons[], std::vector<int>& visited, int current) {
  visited.push_back(current);
  for (auto p : persons[current].friends) {
    if (!in_vector<int>(visited, p)) {
      list_nets(persons, visited, p);
    }
  }
}
int main(void) {
  int N, M, K;
  Person_t persons[110000];
  for (int i = 0; i < 110000; i++) {
    persons[i].index = i;
    persons[i].friends = std::vector<int>();
    persons[i].blocks = std::vector<int>();
  }
  std::cin >> N >> M >> K;
  for (int i = 0; i < M; i++) {
    int a, b;
    std::cin >> a >> b;
    a--;
    b--;
    persons[a].friends.push_back(b);
    persons[b].friends.push_back(a);
  }
  for (int i = 0; i < K; i++) {
    int c, d;
    std::cin >> c >> d;
    c--;
    d--;
    persons[c].blocks.push_back(d);
    persons[d].blocks.push_back(c);
  }
  for (int i = 0; i < N; i++) {
    auto visited = std::vector<int>();
    auto tmp = std::vector<int>();
    list_nets(persons, visited, i);
    std::copy_if(visited.begin(), visited.end(), std::back_inserter(tmp),
                 [&](int x) { return !in_vector<int>(persons[i].blocks, x); });
    visited = std::vector<int>();
    std::copy_if(tmp.begin(), tmp.end(), std::back_inserter(visited),
                 [&](int x) { return !in_vector<int>(persons[i].friends, x); });
    std::cout << visited.size() - 1 << ' ';
  }
  std::cout << std::endl;
  return 0;
}
