Study/Problem Solving

[BOJ_1325] 효율적인 해킹

monitor 2024. 1. 5. 20:06

설명


같은 로직으로 C++으로 제출하면 맞는 정답이다.

 

자바의 경우 로직은 같으나 해당 코드로 통과되지는 않는다.

 

코드


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;

public class Main {
    static boolean [] visited;
    static int max;
    static int[] ans;
    static List<Integer>[] graph;
    public static void main(String[] args) throws Exception{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer tk = new StringTokenizer(in.readLine()," ");
        int N = Integer.parseInt(tk.nextToken());
        int M = Integer.parseInt(tk.nextToken());

        graph = new ArrayList[N + 1];

        visited = new boolean[N + 1];
        for (int i = 0; i <= N; i++){
            graph[i] = new ArrayList<>();
        }

        max = -1;

        ans = new int[N + 1];
        String[] inputs = new String[2];
        for (int i = 0; i < M; i++){
            inputs = in.readLine().split(" ");
            graph[Integer.parseInt(inputs[0])].add(Integer.parseInt(inputs[1]));
        }
        for (int i = 1; i <= N; i++){
            visited = new boolean[N + 1];
            dfs(i);
        }

        for (int i = 1; i <= N; i++)
        {
            max = Math.max(max, ans[i]);
        }

        StringBuffer sb = new StringBuffer();
        for (int i = 1; i <= N; i++)
        {
            if (max == ans[i])
                sb.append(i + " ");
        }

        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }
    private static void dfs(int index){
        visited[index] = true;
        ans[index]++;
        for(int idx : graph[index]){
            if(!visited[idx]){
                visited[idx] = true;
                dfs(idx);
            }
        }
    }
}
 

1325번: 효율적인 해킹

첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한

www.acmicpc.net