fun main(args: Array<String>) {
  val (n, m, k) = readLine()!!.split(" ").map { it.toInt() }
  val uf = UnionFind(n)
  val ex = IntArray(n)
  repeat(m) {
    val (a, b) = readLine()!!.split(" ").map{ it.toInt()-1 }
    uf.unite(a, b)
    ex[a]++
    ex[b]++
  }
  repeat(k) {
    val (c, d) = readLine()!!.split(" ").map{ it.toInt()-1 }
    if (uf.same(c, d)) {
      ex[c]++
      ex[d]++
    }
  }
  println((0 until n).map { uf.size(it) - ex[it] - 1 }.joinToString(" "))
}

class UnionFind(private val n: Int) {
  private val parent = IntArray(n) { it }
  private val rank = IntArray(n)
  private val size = IntArray(n) { 1 }
  
  fun find(i: Int): Int {
    if (parent[i] != i) parent[i] = find(parent[i])
    return parent[i]
  }
  
  fun same(i: Int, j: Int) = find(i) == find(j)
  
  fun unite(i: Int, j: Int) {
    val x = find(i)
    val y = find(j)
    if (x == y) return
    if (rank[x] < rank[y]) {
      parent[x] = y
      size[y] += size[x]
    } else {
      parent[y] = x
      size[x] += size[y]
      if (rank[x] == rank[y]) rank[x]++
    }
  }
  
  fun size(i: Int) = size[find(i)]
}