๋ฌธ์ :
https://www.acmicpc.net/problem/1516
ํ์ด :
๋จผ์ ๊ฐ๋ฐํ ๊ฒ์ด ์๋ค๋ ์ ์์ ์์ ์ ๋ ฌ ๋ฌธ์ ๋ค. ๐๐ป ์์์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
์์ ์ ๋ ธ๋๋ก ํฅํ๋ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์์๋ ๊ทธ ๋ ธ๋๋ฅผ v[์์ ].push_back(ํฅํ๋ ๋ ธ๋)๋ก ๋ฃ์ด์คฌ๋ค.
๊ทธ๋ฆฌ๊ณ ํฅํ๋ ๋ค์ด์ค๋ ๋ ธ๋์ ๊ฐ์ ์ฆ๊ฐ์์ผ์คฌ๋ค. (๊ฐ๋ ๊ณผ ๋ฐ๋๋ค) ์ฆ indegeree[ํฅํ๋๋ ธ๋]++
๋ฐ๋ผ์ ๊ฐ์ ๋์ํ ํ๋ฉด ์๋์ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ indegree๊ฐ 0์ธ ๊ฐ๋ถํฐ vector ๋ฐฐ์ด๋ถํฐ ํ๋์ฉ ๋์ index์ ํด๋นํ๋ vector ๊ฐ์ index์ ๊ฑด์ถ ์๊ฐ์ ๋ํด์ค๋ค.
ํ์ฌ q์๋ indegree๊ฐ 0์ธ 1๋ง ์๋ค.
1์ 2, 3, 4 ํ์ ๋ ธ๋๋ฅผ ๊ฐ๊ฐ ๋๋ฉด์
2๋ฒ ๋ ธ๋ = 2๋ฒ ์์ + 1๋ฒ ๋ ธ๋ ๊ฐ
3๋ฒ ๋ ธ๋ = 3๋ฒ ์์ + 1๋ฒ ๋ ธ๋ ๊ฐ
4๋ฒ ๋ ธ๋ = 4๋ฒ ์์ + 1๋ฒ ๋ ธ๋ ๊ฐ
๊ฐ์ ๋ฐ์ sum ๋ฐฐ์ด์ ์ ๋ฐ์ดํธ ํด์ค๋ค.
์๋ ์์ ์ ๋ ฌ์ ๊ฒฝ์ฐ ์ฌ์ดํด์ด ์กด์ฌํด์ ์๋๋ค .. ! ๊ทผ๋ฐ ์ด ๋ฌธ์ ๋ ์ฌ์ดํด์ด ์กด์ฌํ๋ค. ์ฆ 4๋ฒ ๋ ธ๋๋ฅผ ์ง๊ธฐ ์ํด์ 1๋ฒ์ ๋จผ์ ์ง์ ์ ๋ ์๋๊ฑฐ๊ณ , ์๋๋ฉด 1-3์ ๊ฑฐ์ณ 4๋ฒ์ ์ง์ ๋ฐฉ๋ฒ๋ ์๋๊ฑฐ(Or)๊ฐ ์๋๋ผ ๋๋ค ๋จผ์ ์ง์ด์ ธ์ผ ํ๋ค(And) ๋ฐ๋ผ์ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ + ์๊ธฐ ์๊ฐ์ผ๋ก ๊ณ์ฐํด์ค๋ค.
c++ ์ฝ๋
//
// 1516_gameDev.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/03/03.
//
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int N;
vector<int> v[501];
int indegree[501];
int buildTime[501];
int sum[501];
queue<int> q;
int main(){
for(int i = 1; i <= N; i++){
indegree[i] = 0; // ์ด๊ธฐํ
sum[i] = 0;
}
cin >> N;
for(int i = 1; i <= N; i++){
cin >> buildTime[i];
int b;
while(1){
cin >> b;
if(b == -1) break;
v[b].push_back(i);
indegree[i]++; // ์์ ์ฆ๊ฐ
}
}
for(int i = 1; i <= N; i++){
if(indegree[i] == 0){
q.push(i);
sum[i] = buildTime[i];
}
}
while(!q.empty()){
int top = q.front();
q.pop();
for(int i = 0; i < v[top].size(); i++){
int next = v[top][i];
if(--indegree[next] == 0) { q.push(next); }
sum[next] = max(sum[next], buildTime[next] + sum[top]);
}
}
for(int i = 1; i <= N; i++){
cout << sum[i] << '\n';
}
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] Swift 1806 ๋ถ๋ถํฉ ํฌํฌ์ธํฐ (0) | 2022.03.29 |
---|---|
[๋ฐฑ์ค] Swift 2468 ์์ ์์ญ BFS (0) | 2022.03.11 |
[๋ฐฑ์ค] 2630 ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2022.02.24 |
[๋ฐฑ์ค] 3020 ๊ฐ๋ฅ๋ฒ๋ prefix sum(๋์ ํฉ) (0) | 2022.02.21 |
[๋ฐฑ์ค] 13549 ์จ๋ฐ๊ผญ์ง 3 dijkstra (0) | 2022.02.17 |
๋๊ธ