#include<bits/stdc++.h>
using namespace std;

struct unionfind{
  vector<int> par;
  unionfind(){}
  unionfind(int n){
    par.resize(n,-1);
  }
  int root(int k){
    if(par.at(k)<0)return k;
    return par.at(k) = root(par.at(k));
  }
  int size(int k){
    return -par[root(k)];
  }
  void unite(int a,int b){
    a = root(a);
    b = root(b);
    if(a==b)return ;
    if(size(a)<size(b))swap(a,b);
    par.at(a) += par.at(b);
    par.at(b) = a;
  }
  bool same(int a,int b){
    return root(a) == root(b);
  }
};

signed main(){

  int n,m,k;
  cin>>n>>m>>k;
  unionfind uni(n);
  vector<int> deg(n);
  for(int i=0;i<m;++i){
    int a,b;
    cin>>a>>b;
    a--;b--;
    deg.at(a)++;
    deg.at(b)++;
    uni.unite(a,b);
  }
  for(int i=0;i<k;++i){
    int c,d;
    cin>>c>>d;
    c--;d--;
    if(uni.same(c,d)){
      deg.at(c)++;
      deg.at(d)++;
    }
  }
  for(int i=0;i<n;++i){
    cout<<(uni.size(i)-deg[i]-1)<<" ";
  }
  cout<<endl;

}