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] 1516. 게임 개발 본문

acmicpc

[BAEKJOON] 1516. 게임 개발

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

 

위상정렬

문제링크

www.acmicpc.net/problem/1516

 

1516번: 게임 개발

첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부

www.acmicpc.net

 

package acmicpc.Gold3;

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());
		
		List<List<Integer>> list = new ArrayList<List<Integer>>();
		for(int i = 0 ; i <= n ; i++) {
			list.add(new ArrayList<>());
		}
		
		int[] arr = new int[n+1];
		int[] cnt = new int[n+1];
		for(int i = 1 ; i <= n ; i++) {
			st = new StringTokenizer(br.readLine());
			arr[i] = Integer.parseInt(st.nextToken());
			while(true) {
				int x = Integer.parseInt(st.nextToken());
				if(x == -1) break;
				list.get(x).add(i);
				cnt[i]++;
			}
		}

		Queue<Integer> queue = new LinkedList<>();
		int[] ans = new int[n+1];
		for(int i = 1 ; i <= n ; i++) {
			if(cnt[i] == 0) {
				queue.offer(i);
			}
			ans[i] = arr[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(arr[l] + ans[x], ans[l]);
			}
		}
		
		for(int i = 1 ; i <= n ; i++)
			System.out.println(ans[i]);
	
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 16985. Maaaaaaaaaze  (0) 2021.04.21
[BAEKJOON] 7579. 앱  (0) 2021.04.19
[BAEKJOON] 2056. 작업  (0) 2021.04.19
[BAEKJOON] 2637. 장난감조립  (0) 2021.04.19
[BAEKJOON] 16236. 아기 상어  (0) 2021.04.16