#include "bits/stdc++.h"

using namespace std;

//// original version
//void Main() {
//    int N, M, K;
//    cin >> N >> M >> K;
//    map<int, set<int>> friends;
//    for (int i = 0; i < M; ++i) {
//        int a, b;
//        cin >> a >> b;
//        if (friends.count(a) == 0) {
//            friends.insert(make_pair(a, set<int>()));
//        }
//        friends[a].insert(b);
//        if (friends.count(b) == 0) {
//            friends.insert(make_pair(b, set<int>()));
//        }
//        friends[b].insert(a);
//    }
//    map<int, set<int>> blocks;
//    for (int i = 0; i < K; ++i) {
//        int a, b;
//        cin >> a >> b;
//        if (blocks.count(a) == 0) {
//            blocks.insert(make_pair(a, set<int>()));
//        }
//        blocks[a].insert(b);
//        if (blocks.count(b) == 0) {
//            blocks.insert(make_pair(b, set<int>()));
//        }
//        blocks[b].insert(a);
//    }
//
//    vector<int> numCandidates(N + 1, -1);
//    for (int i = 1; i <= N; ++i) {
//        if (numCandidates[i] >= 0) {
//            continue;
//        }
//        queue<int> q;
//        set<int> candidates;
//        q.push(i);
//        candidates.insert(i);
//        while (!q.empty()) {
//            auto p = q.front();
//            q.pop();
//            if (friends.count(p) == 0) {
//                continue;
//            }
//            for (auto e : friends[p]) {
//                if (candidates.count(e) == 0) {
//                    q.push(e);
//                    candidates.insert(e);
//                }
//            }
//        }
//
//        for (auto e : candidates) {
//            int n = candidates.size() - 1;
//            if (friends.count(e) > 0) {
//                n -= friends[e].size();
//            }
//            for (auto b : blocks[e]) {
//                if (candidates.count(b) > 0) {
//                    --n;
//                }
//            }
//            numCandidates[e] = n;
//        }
//
//    }
//
//    for (int i = 1; i <= N; ++i) {
//        if (i > 1) {
//            cout << " ";
//        }
//        cout << numCandidates[i];
//    }
//    cout << endl;
//}

//// dfs version
int dfs(int curr, const vector<set<int> >& friends, vector<int>& groupID, int id) {
    if (groupID[curr] >= 0) {
        return 0;
    }

    groupID[curr] = id;
    int n = 1;
    for (auto e : friends[curr]) {
        n += dfs(e, friends, groupID, id);
    }
    return n;
}
void Main() {
    int N, M, K;
    cin >> N >> M >> K;
    vector<set<int> > friends(N, set<int>());
    for (int i = 0; i < M; ++i) {
        int a, b;
        cin >> a >> b;
        --a;
        --b;
        friends[a].insert(b);
        friends[b].insert(a);
    }
    vector<pair<int, int> > blocks(K, make_pair(0, 0));
    for (int i = 0; i < K; ++i) {
        int c, d;
        cin >> c >> d;
        --c;
        --d;
        blocks[i].first = c;
        blocks[i].second = d;
    }

    vector<int> groupID(N, -1);
    map<int, int> id_sz;
    int id = 0;
    for (int i = 0; i < N; ++i) {
        int sz = dfs(i, friends, groupID, id);
        if (sz > 0) {
            id_sz.insert(make_pair(id, sz));
            ++id;
        }
    }

    vector<int> ans(N, 0);
    for (int i = 0; i < N; ++i) {
        int id = groupID[i];
        ans[i] = id_sz[id] - 1 - friends[i].size();
    }
    for (int i = 0; i < K; ++i) {
        int c = blocks[i].first;
        int d = blocks[i].second;
        if (groupID[c] == groupID[d]) {
            --ans[c];
            --ans[d];
        }
    }
    for (int i = 0; i < N; ++i) {
        if (i > 0) {
            cout << " ";
        }
        cout << ans[i];
    }
    cout << endl;
}

int main() {
    std::cout << std::fixed << std::setprecision(15);
    Main();
    return 0;
}


Measured memory_bytes: 23572