class UnionFind(val n: Int) {

  val data = IntArray(n) { -1 }

  fun root(x: Int): Int {
    if (data[x] < 0) return x
    data[x] = root(data[x])
    return data[x]
  }

  fun unite(x: Int, y: Int) {
    var rx = root(x)
    var ry = root(y)
    if (rx == ry) return
    if (-data[rx] < -data[ry]) {
      val t = rx
      rx = ry
      ry = t
    }
    data[rx] += data[ry]
    data[ry] = rx
  }

  fun same(x: Int, y: Int) = root(x) == root(y)

  fun size(x: Int) = -data[root(x)]
}

fun main(args: Array<String>) {
  val (n, m, k) = readLine()!!.split(' ').map(String::toInt)
  val uf = UnionFind(n + 1)
  val fr = IntArray(n + 1)
  val bk = IntArray(n + 1)
  repeat(m) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)
    uf.unite(a, b)
    fr[a]++
    fr[b]++
  }
  repeat(k) {
    val (c, d) = readLine()!!.split(' ').map(String::toInt)
    if (uf.same(c, d)) {
      bk[c]++
      bk[d]++
    }
  }
  for (p in 1..n) {
    print(uf.size(p) - fr[p] - bk[p] - 1)
    print(' ')
  }
  println()
}
