본문 바로가기
알고리즘 문제풀이/백준

[백준 5567] 결혼식(JAVA)

by 소보루:-) 2020. 3. 26.

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++;
				}
			}
		}
		
	}

}

댓글