SSONG Cloud

[백준] 5567 결혼식 본문

Algorithm/백준

[백준] 5567 결혼식

SSONGMI 2021. 3. 31. 00:10
반응형

문제 출처: www.acmicpc.net/problem/5567

 

5567번: 결혼식

2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2,3,4 3명의 친구를 결혼식에 초대한다.

www.acmicpc.net

: 상근이가 자신의 친구와 친구의 친구까지 초대하려고 할 때 결혼식에 초대할 사람의 수를 구해야 한다.

: 상근이의 친구관계를 인접행렬로 표현한다.

: 인접행렬의 1행 즉, 상근이와 직접 친구인 사람들을 찾으면 그에 해당하는 행을 가서 다시 탐색하면서 상근이의 친구의 친구를 찾는다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static StringBuilder sb = new StringBuilder();
	static StringTokenizer st;

	public static void main(String[] args) throws NumberFormatException, IOException {
		int N = Integer.parseInt(br.readLine()); // 컴퓨터 개수
		int[][] adj= new int[N+1][N+1];
		boolean[] v = new boolean[N+1];
		int M = Integer.parseInt(br.readLine());
		
		for(int i = 0; i < M; i++) {
			st = new StringTokenizer(br.readLine());
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			
			adj[a][b] = 1;
			adj[b][a] = 1;
		}
		int cnt = 0;
		for(int i = 2; i < N+1; i++) {
			if(adj[1][i] == 1) {
				if(!v[i]) {
					cnt++;
					v[i] = true;
				}
				for(int j = 2; j < N+1; j++) {
					if(!v[j] && adj[i][j] == 1) {
						v[j] = true;
						cnt++;
					}
				}					
			}
		}

	
		System.out.println(cnt);
	}
}
반응형

'Algorithm > 백준' 카테고리의 다른 글

[백준] 2589 보물섬  (0) 2021.04.01
[백준] 2606 바이러스  (0) 2021.03.31
[백준] 7562 나이트의 이동  (0) 2021.03.29
[백준] 2565 전깃줄  (0) 2021.03.29
[백준] 16236 아기 상어  (0) 2021.03.28
Comments