๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 5938_Daisy Chains in the Field

๋ฟŒ์•ผ._. 2025. 8. 25. 12:10
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/5938)

< Daisy Chains in the Field >

 

๋ฌธ์ œ ํ’€์ด 

 

bfs๋ฅผ ํ™œ์šฉํ•˜์—ฌ 1๋ฒˆ ์†Œ์™€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์†Œ๋ฅผ ์ฐพ๋Š”๋‹ค.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class _5938_ { // Daisy Chains in the Field

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st = new StringTokenizer(bf.readLine());

		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());

		boolean visited[] = new boolean[n + 1];

		ArrayList<ArrayList<Integer>> list = new ArrayList<>();

		for (int i = 0; i < n + 1; i++) {
			list.add(new ArrayList<>());
		}

		for (int i = 0; i < m; i++) {
			st = new StringTokenizer(bf.readLine());

			int c1 = Integer.parseInt(st.nextToken());
			int c2 = Integer.parseInt(st.nextToken());

			list.get(c1).add(c2);
			list.get(c2).add(c1);
		}

		bfs(visited, list);

		boolean flag = false;
		for (int i = 1; i < n + 1; i++) {
			if (!visited[i]) {
				flag = true;
				bw.write(i + "\n");
			}
		}
		if (!flag) {
			bw.write("0");
		}

		bw.flush();
	}

	private static void bfs(boolean[] visited, ArrayList<ArrayList<Integer>> list) {
		Queue<Integer> queue = new LinkedList<>();
		queue.add(1);
		visited[1] = true;

		while (!queue.isEmpty()) {
			int info = queue.poll();

			for (int i = 0; i < list.get(info).size(); i++) {
				if (!visited[list.get(info).get(i)]) {
					visited[list.get(info).get(i)] = true;
					queue.add(list.get(info).get(i));
				}
			}
		}
	}
}
๋ณ€์ˆ˜)
n, m : ์†Œ์˜ ์ˆ˜, ์—ฐ๊ฒฐ๋œ ์†Œ์˜ ์ˆ˜
visited : 1๋ฒˆ๊ณผ ์—ฐ๊ฒฐ ์—ฌ๋ถ€
list : ์—ฐ๊ฒฐ๋œ ์†Œ ์ •๋ณด
c1, c2 : ์—ฐ๊ฒฐ๋œ ์†Œ ์ž…๋ ฅ๊ฐ’ 
flag : ์—ฐ๊ฒฐ ์—ฌ๋ถ€

 

Main

์†Œ์˜ ์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ ์†Œ์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์—ฐ๊ฒฐ๋œ ์†Œ์˜ ์ˆ˜๋งŒํผ ์—ฐ๊ฒฐ๋œ ์†Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ArrayList์— ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ €์žฅํ•œ๋‹ค. bfs ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ visited๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ 1๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์†Œ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, 1๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์†Œ๊ฐ€ ํ•œ ๋งˆ๋ฆฌ๋„ ์—†๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

bfs(์—ฐ๊ฒฐ ์—ฌ๋ถ€, ์—ฐ๊ฒฐ ์ •๋ณด)

Queue์— 1 ์ €์žฅ๊ณผ visited[1]์„ true๋กœ ์ €์žฅ ํ›„ Queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) queue poll

2) ArrayList์—์„œ ๊ฐ’์„ ์ฐพ์•„ ํƒ์ƒ‰ํ•˜๋ฉฐ ์•„์ง ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์€ ๋ฒˆํ˜ธ๋ผ๋ฉด true๋กœ ์ €์žฅ ํ›„ queue์— ์ถ”๊ฐ€