[백준] 1043번:거짓말 (Java 자바)

[백준] 1043번:거짓말 (Java 자바)

반응형

문제

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

풀이 및 소스코드

진실을 아는 사람은 미리 방문표시 v[i] = true 해주고, bfs를 위한 큐에 담아놓는다.

같은 파티에 참가하는 사람끼리 연결시켜준 후, 진실을 아는 사람을 시작으로 bfs를 돌리면 진실을 아는 사람이 참가한 파티에 있는 모든 참가자는 진실을 알게된다.

그렇게 진실을 모두 알린 후, 파티들을 조사해서 하나라도 true 인 사람이 없다면 거짓말을 할 수 있는 파티이기 때문에 cnt를 증가시켜주면 된다.

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); // 사람의 수 int m = Integer.parseInt(st.nextToken()); // 파티의 수 boolean[] v = new boolean[n]; st = new StringTokenizer(br.readLine()); int know = Integer.parseInt(st.nextToken()); Queue q = new LinkedList<>(); //bfs를 위한 큐 for (int i = 0; i < know; i++) { int a = Integer.parseInt(st.nextToken())-1; v[a] = true; q.add(a); //진실 아는 사람 처리해주기. } LinkedList[] g = new LinkedList[n]; //같은 파티인 사람끼리 연결되는 그래프 for(int i=0;i(); } int[][] p_info = new int[m][]; //파티의 정보를 담는 배열 for(int i=0;i

반응형

from http://jainn.tistory.com/290 by ccl(A) rewrite - 2021-10-01 12:27:50