#!/usr/bin/env python3 # Načteme počet ostrovů a mostů N, K = map(int, input().split()) # Načteme mosty: edges[i] bude seznam mostů z ostrova i edges = [ [] for _ in range(N) ] for _ in range(K): a, b = map(int, input().split()) edges[a].append(b) edges[b].append(a) # Prohledáváme graf do šířky: seen[i] říká, zda jsme na ostrově i už byli, # num_components počítá nalezené komponenty num_components = 0 seen = [ False for _ in range(N) ] for node in range(N): if seen[node]: continue # Objevili jsme nový, dosud nedosažený ostrov: prohledáme další komponentu num_components += 1 queue = [node] # Fronta while queue: node = queue.pop() if seen[node]: continue seen[node] = True for next_node in edges[node]: queue.append(next_node) print(num_components - 1)