Загрузка данных


import sys

input_data = list(map(int, sys.stdin.read().split()))
num_vertices, num_edges = input_data[0], input_data[1]

parent = list(range(num_vertices + 1))
comp_vertices = [1] * (num_vertices + 1)
comp_edgs = [0] * (num_vertices + 1)


def find_root(vertex):
    while vertex != parent[vertex]:
        parent[vertex] = parent[parent[vertex]]
        vertex = parent[vertex]
    return vertex


for i in range(2, 2 * num_edges + 2, 2):
    u, v = input_data[i], input_data[i + 1]
    root_u, root_v = find_root(u), find_root(v)

    if root_u != root_v:
        parent[root_u] = root_v
        comp_vertices[root_v] += comp_vertices[root_u]
        comp_edgs[root_v] += comp_edgs[root_u]

    comp_edgs[root_v] += 1

comp_roots = [v for v in range(1, num_vertices + 1) if parent[v] == v]

tree_count = sum(comp_edgs[r] == comp_vertices[r] - 1 for r in comp_roots)

total_comp = len(comp_roots)
print(total_comp, tree_count)