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

[JAVA]백준_5567_결혼식

by 박 현 황 2021. 6. 17.

문제링크

https://www.acmicpc.net/problem/5567

 

5567번: 결혼식

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

www.acmicpc.net

 

이 부분을 간과해서 틀렸었다.

a1,b1만 친구관계로 연결해놓고

b1,a1는 친구관계로 연결 해주지 않았기때문이다.

 

3

2

2 1 

3 1

 

output : 2

나와야 한당

 

package BOJ;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

public class Main_5567 {
    static int N,M;
    static boolean friend[];
    static ArrayList<Integer> list[];
    static int result;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        friend = new boolean[N+1];
        list = new ArrayList[N+1];
        for(int i=0;i<=N;i++) list[i] = new ArrayList<>();

        M = Integer.parseInt(br.readLine());

        for(int m=0;m<M;m++){
            String str[] = br.readLine().split(" ");
            int start = Integer.parseInt(str[0]);
            int end = Integer.parseInt(str[1]);

            list[start].add(end);
            list[end].add(start);
        }
        dfs(1,1);

        for(int i=2;i<=N;i++){
            if(friend[i]) result++;
        }

        System.out.println(result);
    }

    static void dfs(int v,int cnt){
        if(cnt == 3) return;

        Iterator<Integer> it = list[v].iterator();
        //friend[v] = true;

        while(it.hasNext()){
            //친구 & 친구의 친구
            int num = it.next();
            friend[num] = true;
            dfs(num,cnt+1);
        }
    }
}

 

친구의 친구까지만 결혼식에 초대하기 위해 cnt를 주어서 cnt == 3이면 친구으 ㅣ친구의 친구에서 끊어주도록 했다!

 

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

[JAVA]백준_9421_소수상근수  (0) 2021.06.23
[JAVA]백준_20114_미아노트  (0) 2021.06.17
[JAVA]백준_8972_미친 아두이노  (0) 2021.06.08
[JAVA]백준_6118_숨바꼭질  (0) 2021.06.01
[JAVA]백준_2877_4와7  (0) 2021.05.03