https://www.acmicpc.net/board/view/85017
글 읽기 - 3% 입구 컷 당하네요 ㅠㅠ (주석있음, 발상 설명있음, 예제 다 통과)
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
[백준] 1043 : 거짓말 (JAVA/자바)
문제 > BOJ 1043 : 거짓말 - https://www.acmicpc.net/problem/1043 풀이 input을 받으면서부터 엄청 헷갈렸던 문제다. n과 m이 주어진 뒤, 진실을 알고있는 사람 정보가 주어지고, 각 파티별 참석자 정보가 주어
velog.io
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
static int[] parent;
static int N;
public static void main(String arg[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
parent = new int[N+1];
boolean[] trueman = new boolean[N+1];
st = new StringTokenizer(br.readLine(), " ");
int k = Integer.parseInt(st.nextToken());
for(int i = 0; i < k; i++) {
int a = Integer.parseInt(st.nextToken());
trueman[a] = true;
}
for(int i = 1; i <= N; i++) {
parent[i] = i;
}
int[][] print = new int[M][];
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine(), " ");
int tmp = Integer.parseInt(st.nextToken());
print[i] = new int[tmp];
int min = 0;
for(int j = 0; j < tmp; j++) {
print[i][j] = Integer.parseInt(st.nextToken());
if(min == 0) {
min = print[i][j];
}
else {
union(min, print[i][j]);
}
}
}
boolean[] visit = new boolean[N+1];
for(int i = 1; i <= N; i++) {
if(trueman[i] && !visit[i]) {
int root = find(i);
for(int j = 1; j <= N; j++) {
if(find(j) == root) {
trueman[j] = true;
visit[j] = true;
}
}
}
}
int answer = M;
for(int i = 0; i < M; i++) {
boolean infection = false;
for(int j = 0; j < print[i].length; j++) {
if(trueman[print[i][j]]) {
infection = true;
}
}
if(infection)
answer--;
}
System.out.println(answer);
}
static int find(int x) {
if(x == parent[x]) {
return x;
}
return parent[x] = find(parent[x]);
}
static void union(int a, int b) {
a = find(a);
b = find(b);
if(a != b) {
parent[b] = a;
}
}
}
'백준' 카테고리의 다른 글
[백준] 2448 별 찍기 - 11 [자바] (0) | 2022.04.25 |
---|---|
[백준] 1629 곱셈 [자바] (0) | 2022.04.22 |
[백준] 16236 아기 상어 [자바] (0) | 2022.04.19 |
[백준] 16928 뱀과 사다리 게임 [자바] (0) | 2022.04.16 |
[백준] 10026 적록색약 [자바] (0) | 2022.04.13 |