Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 2056. 작업 본문

acmicpc

[BAEKJOON] 2056. 작업

코드와이 2021. 4. 19. 22:20

 

위상정렬

문제링크

 

www.acmicpc.net/problem/2056

 

2056번: 작업

수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해

www.acmicpc.net

 

package acmicpc.Gold4;

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

public class 작업 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		int n = Integer.parseInt(br.readLine());
		
		int[] times = new int[n+1];
		List<List<Integer>> list = new ArrayList<List<Integer>>();
		for(int i = 0 ; i <= n ; i++) {
			list.add(new ArrayList<>());
		}
		
		int[] cnt = new int[n+1];
		for(int i = 1 ; i <= n ; i++) {
			
			st = new StringTokenizer(br.readLine());
			
			times[i] = Integer.parseInt(st.nextToken());
			
			int x = Integer.parseInt(st.nextToken());
			for(int j = 0 ; j < x ; j++) {
				int k = Integer.parseInt(st.nextToken());
				list.get(k).add(i);
				cnt[i]++;
			}
		}
		
		Queue<Integer> queue = new LinkedList<>();
		int[] ans = new int[n+1];
		int y = 0;
		for(int i = 1 ; i <= n ; i++) {
			if(cnt[i] == 0) {
				queue.add(i);
			}
			ans[i] = times[i];
		}
		
		while(!queue.isEmpty()) {
			int x = queue.poll();
			
			for(int l : list.get(x)) {
				if(--cnt[l] == 0) {
					queue.offer(l);
				}	
				ans[l] = Math.max(ans[x] + times[l], ans[l]);
			}
		}
		int max = 0;
		for(int a : ans) max = Math.max(a, max);
		System.out.println(max);
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 7579. 앱  (0) 2021.04.19
[BAEKJOON] 1516. 게임 개발  (0) 2021.04.19
[BAEKJOON] 2637. 장난감조립  (0) 2021.04.19
[BAEKJOON] 16236. 아기 상어  (0) 2021.04.16
[BAEKJOON] 16235. 나무 재테크  (0) 2021.04.16