paysmile 2019. 1. 5. 22:12

#include <iostream>

using namespace std;


int computernum, computercnt;

int comconnect[100][100];

int visit[100];


void bfs(int a,int b) {

int com1 = a;

int com2 = b;


comconnect[com1][com2] = 0;

visit[com2] = 1;

for (int i = 0; i < 100; i++) {

if (comconnect[com2][i] != 0 && visit[i] ==0)

bfs(com2,i);

}

}

int main(void) {

cin >> computernum >> computercnt;


for (int i = 0; i < 100; i++) {

for (int j = 0; j < 100; j++) {

comconnect[i][j] = 0;

}

visit[i] = 0;

}

for (int i = 0; i < computercnt; i++) {

int x, y;

cin >> x >> y;

comconnect[x][y] = 1;

comconnect[y][x] = 1;

}

for (int i = 0; i < 100; i++) {

if (comconnect[1][i] != 0)

bfs(1,i);

}

int count = 0;

for (int i = 0; i < 100; i++) {

if (visit[i] == 1) 

count++;

}

cout << count-1;

}