https://www.acmicpc.net/problem/5567
5567번: 결혼식
문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main_bj_5567_결혼식 {
static int N,M,cnt=0;
static List[] list;
static boolean[] chk;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
N = Integer.parseInt(br.readLine());
M = Integer.parseInt(br.readLine());
list=new ArrayList[N+1];
chk= new boolean[N+1];
for(int i=1; i<=N; i++)
list[i]=new ArrayList();
for(int i=0; i<M; i++) {
st=new StringTokenizer(br.readLine()," ");
int me=Integer.parseInt(st.nextToken());
int friend=Integer.parseInt(st.nextToken());
list[me].add(friend);
list[friend].add(me);
}
chk[1]=true;
start(1);
System.out.println(cnt);
}
private static void start(int num) {
for(int i=0; i<list[num].size(); i++) {
int next=(int) list[num].get(i);
if(chk[next]==false) {
chk[next]=true;
cnt++;
}
for(int j=0; j<list[next].size(); j++) {
int next2=(int) list[next].get(j);
if(chk[next2]==false) {
chk[next2]=true;
cnt++;
}
}
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 9237] 이장님 초대(JAVA) (0) | 2020.03.29 |
---|---|
[백준 16954] 움직이는 미로 탈출(JAVA) (0) | 2020.03.27 |
[백준 9466] 텀 프로젝트(JAVA/C++) (0) | 2020.03.25 |
[백준 14405] 피카츄(JAVA) (0) | 2020.03.24 |
[백준 2151] 거울 설치(JAVA) (0) | 2020.03.23 |
댓글