#include <bits/stdc++.h>

const int maxn = 2e5 + 5, maxm = 4e5 + 5;
int head[maxn], next[maxm], ver[maxm], tot = 1;
int bloc[maxn], cur = 0, ans[maxn], cnt_b[maxn];
void add(int a, int b){
	ver[++tot] = b;
	next[tot] = head[a], head[a] = tot;
}
void dfs(int u){
	bloc[u] = cur;
	cnt_b[cur] ++; 
	for(int i=head[u];i;i=next[i]){
		if(bloc[ver[i]]) continue;
		dfs(ver[i]);
	}
}
int main(){
	int n, m, k;
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=m;i++){
		int a, b;
		scanf("%d%d",&a,&b);
		add(a, b); add(b, a);
		ans[a] --; ans[b] --;
	}
	for(int i=1;i<=n;i++){
		if(!bloc[i]) cur ++, dfs(i);
	}
	for(int i=1;i<=n;i++) ans[i] += cnt_b[bloc[i]] - 1;
	for(int i=1;i<=k;i++){
		int a, b;
		scanf("%d%d",&a,&b);
		if(bloc[a] == bloc[b]) ans[a] --, ans[b] --;
	}
	for(int i=1;i<=n;i++) printf("%d ", ans[i]);
	return 0;
}