/*
#include <stdio.h>//4503 : 바이러스 DFS(재귀)
int n, k=0, a[101][101]={},b[101]={};
void dfs(int x)
{
b[x]=1;
int i,j;
for(i=1; i<=n; i++){
if(a[x][i]==1 && b[i]==0){ // x노드와 i 노드가 연결 && i노드 방문x
// printf("**(%d,%d) DFS(%d)\n",x,i,x);
k++;
dfs(i);
}
}
}
int main()
{
int i,j,e,x,y;
scanf("%d %d",&n,&e);
for(i=0; i<e; i++){
scanf("%d %d",&x,&y);
a[x][y]=1;
a[y][x]=1;
}
dfs(1);
printf("%d",k);
return 0;
}
*/
#include <stdio.h>//4503 : 바이러스 BFS(큐)
int n, k=0, a[101][101]={},b[101]={};
int queue[150]={};
int front=-1, back = -1;
void push(int x)
{
b[x]=1; //방문표시
back++;
queue[back]=x;
}
int pop()
{
if(front==back) return -1;
front++;
return queue[front];
}
void bfs(int x)
{
push(x);
while(){
int tmp = pop();
// tmp와 연결 되어있으면서 방문하지 않은 노드 모두 push
for(){
if(){
push();
}
}
}
}
int main()
{
int i,j,e,x,y;
scanf("%d %d",&n,&e);
for(i=0; i<e; i++){
scanf("%d %d",&x,&y);
a[x][y]=1;
a[y][x]=1;
}
bfs(1);
printf("%d",k);
return 0;
}