์ด๋ ค์ด ๋ฌธ์ ๋ ์ด๋ ๊ฒ ์ฝ๊ฒ ํ๋ ธ์ผ๋ฉด ์ข๊ฒ ๋ค ํํํํํ
ArrayList ๋ฐฐ์ด์ ๋ง๋ค์ด์ BFS๋ก ํ์๋ค.
Queue์๋ค๊ฐ 1์ด๋ ์ด์ด์ง ์ปดํจํฐ๋ค ๋ฒํธ ๋ฃ๊ณ , infected
์ฌ๋ถ ์ฒดํฌํด์ infected=false
์ธ ์ปดํจํฐ๋ค๋ง ๋ค์ ํ์๋ค๊ฐ ์ง์ด ๋ฃ์ด์คฌ๋ค. ์ด๋ฏธ ๊ฐ์ผ ํ์ธ๋ ์ปดํจํฐ๋ผ๋ฉด ๊ฐ์ผ์ ํ์ธํ ์์ ์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ๋ค์ ๋ค ํ์๋ค๊ฐ ๋ฃ์ด์คฌ์ ํ
๋๊น!
N์ ๋ฒ์๊ฐ ์์์ ์ธ์ ๋ฆฌ์คํธ ๋์ ์ N+1 x N+1
ํ๋ ฌ์ ๋ง๋ค์ด์ ์ฒดํฌํ์ด๋ ๋์ ๊ฒ ๊ฐ๋ค.
์ ์๋ฅผ ๋ค์ด, network[A][B] = 1 = network[B]=[A]
์ด๋ฐ ์์ผ๋ก?
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
public class Main2606_๋ฐ์ด๋ฌ์ค {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine().trim());
int M = Integer.parseInt(br.readLine().trim());
ArrayList<Integer>[] network = new ArrayList[N+1];
for(int n=1;n<=N;n++) {
network[n] = new ArrayList<Integer>();
}
String[] str;
int A,B;
for(int m=1;m<=M;m++) {
str = br.readLine().trim().split(" ");
A = Integer.parseInt(str[0]);
B = Integer.parseInt(str[1]);
network[A].add(B);
network[B].add(A);
}
boolean[] infected = new boolean[N+1];
Queue<Integer> que = new LinkedList<Integer>();
que.add(1);
infected[1] = true;
int cnt = 0;
int now;
while(!que.isEmpty()) {
now = que.poll();
ArrayList<Integer> connected = new ArrayList<Integer>();
connected = network[now];
for (Integer i : connected) {
if(!infected[i]) {
infected[i] = true;
cnt++;
que.add(i);
}
}
}
System.out.println(cnt);
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ] ๋ฐฑ์ค 1012 - ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2020.12.06 |
---|---|
[์๋ฐ] ๋ฐฑ์ค 2667 - ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2020.12.06 |
[์๋ฐ] ๋ฐฑ์ค 1260 - DFS์ BFS (0) | 2020.12.05 |
[์๋ฐ] ๋ฐฑ์ค 9372 - ์๊ทผ์ด์ ์ฌํ (0) | 2020.12.04 |
[์๋ฐ] ๋ฐฑ์ค 1068 - ํธ๋ฆฌ (0) | 2020.12.04 |