using CompLib.Util;
using System;
using System.Linq;

public class Program
{
    int N, M, K;
    int[] A, B;
    int[] C, D;
    public void Solve()
    {
        var sc = new Scanner();
        N = sc.NextInt();
        M = sc.NextInt();
        K = sc.NextInt();
        A = new int[M];
        B = new int[M];
        for (int i = 0; i < M; i++)
        {
            A[i] = sc.NextInt() - 1;
            B[i] = sc.NextInt() - 1;

        }

        C = new int[K];
        D = new int[K];
        for (int i = 0; i < K; i++)
        {
            C[i] = sc.NextInt() - 1;
            D[i] = sc.NextInt() - 1;
        }

        // ufでサイズ求める
        // 直接友達の人
        // 

        int[] friends = new int[N];
        for (int i = 0; i < M; i++)
        {
            friends[A[i]]++;
            friends[B[i]]++;
        }


        var uf = new UnionFind(N);

        for (int i = 0; i < M; i++)
        {
            uf.Union(A[i], B[i]);
        }
        int[] ans = new int[N];
        for (int i = 0; i < N; i++)
        {
            ans[i] = uf.GetSize(i) - friends[i] - 1;
        }

        for (int i = 0; i < K; i++)
        {
            if (uf.Same(C[i], D[i]))
            {
                ans[C[i]]--;
                ans[D[i]]--;
            }
        }

        Console.WriteLine(string.Join(" ", ans));
    }

    public static void Main(string[] args) => new Program().Solve();
}


class UnionFind
{
    private int[] Par, Size;
    public UnionFind(int max)
    {
        Par = new int[max];
        Size = new int[max];
        for (int i = 0; i < max; i++)
        {
            Par[i] = i;
            Size[i] = 1;
        }
    }

    private int Find(int n)
    {
        if (Par[n] == n)
        {
            return n;
        }
        else
        {
            return Find(Par[n]);
        }
    }

    public bool Same(int a, int b)
    {
        return Find(a) == Find(b);
    }
    public int GetSize(int i)
    {
        return Size[Find(i)];
    }

    public void Union(int a, int b)
    {
        a = Find(a);
        b = Find(b);
        if (a == b) return;
        if (Size[a] < Size[b])
        {
            Par[a] = b;
            Size[b] += Size[a];
        }
        else
        {
            Par[b] = a;
            Size[a] += Size[b];
        }
    }
}

namespace CompLib.Util
{
    using System;
    using System.Linq;
    class Scanner
    {
        private int _index;
        private string[] _line;
        const char separator = ' ';

        public Scanner()
        {
            _index = 0;
            _line = new string[0];
        }

        public string Next()
        {
            while (_index >= _line.Length)
            {
                _line = Console.ReadLine().Split(separator);
                _index = 0;
            }
            return _line[_index++];
        }
        public int NextInt() => int.Parse(Next());
        public long NextLong() => long.Parse(Next());
        public double NextDouble() => double.Parse(Next());
        public char NextChar() => Next()[0];
        public char[] NextCharArray() => Next().ToCharArray();

        public string[] Array()
        {
            _line = Console.ReadLine().Split(separator);
            _index = _line.Length;
            return _line;
        }
        public int[] IntArray() => Array().Select(int.Parse).ToArray();
        public long[] LongArray() => Array().Select(long.Parse).ToArray();
        public double[] DoubleArray() => Array().Select(double.Parse).ToArray();
    }
}

Measured memory_bytes: 22440