반응형
2056번: 작업
수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해
www.acmicpc.net
Code
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int n,t[10001],ind[10001],minTime[10001],workn,pwork,ans;
vector <int> a[10001];
int main() {
queue <int> q;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> t[i];
cin >> workn;
for (int j = 0; j < workn; j++)
{
cin >> pwork;
a[pwork].push_back(i);
ind[i]++;
}
}
for (int i = 1; i <= n; i++)
{
if (ind[i] == 0)
{
q.push(i);
minTime[i] = t[i];
}
}
for (int k = 1; k <= n; k++)
{
int x = q.front();
q.pop();
for (int i = 0; i < a[x].size(); i++)
{
int y = a[x][i];
ind[y]--;
if (minTime[y] < minTime[x] + t[y])//최소 작업 시간을 저장한다
minTime[y] = minTime[x] + t[y];
if (ind[y] == 0) { q.push(y); }
}
}
for (int i = 1; i <= n; i++)
{
if (minTime[i] > ans)
ans = minTime[i];
}
cout << ans << '\n';
}
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - 프로그래머스(고득점 kit - Hash) : 위장 답 (0) | 2021.02.02 |
---|---|
(C++) - 백준(BOJ) 11279번 : 최대 힙 답 (0) | 2020.09.11 |
(C++) - 백준(BOJ) 5635번 : 생일 (0) | 2017.04.01 |
(C++) - 백준(BOJ) 10828번 : 스택(stack) 답 (0) | 2016.09.23 |
(C++) - 백준(BOJ) 10845번 : 큐(queue) (0) | 2016.09.23 |