https://www.acmicpc.net/problem/1005
주석에 중요문장이라고 표시한 문장이 다른 곳에서도 종종 쓰인다.
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int tc; cin >> tc;
while (tc--) {
int n, k; cin >> n >> k;
int w[1001], ind[1001], time[1001];
for (int i = 0; i < n; i++) {
cin >> w[i];
time[i] = w[i];
ind[i] = 0;
}
vector<vector<int>> adj(n);
for (int i = 0,u,v; i < k; i++) {
cin >> u >> v;
adj[u - 1].push_back(v - 1);
ind[v - 1]++;
}
int target; cin >> target;
queue<int> q;
for (int i = 0; i < n; i++) if (ind[i] == 0) q.push(i);
while (!q.empty()) {
int curr = q.front();
q.pop();
for (int next : adj[curr]) {
//@중요문장@
time[next] = max(time[next], time[curr] + w[next]);
if (--ind[next] == 0) q.push(next);
}
}
cout << time[target-1] << '\n';
}
}
'알고리즘 > 백준 & swacademy' 카테고리의 다른 글
BOJ 7535 - A Bug's Life (0) | 2019.08.19 |
---|---|
BOJ 4013 - ATM (0) | 2019.08.19 |
BOJ 2887 - 행성터널 (0) | 2019.08.19 |
BOJ 10265 - MT (sAdj, 위상정렬, knapsack) (0) | 2019.08.19 |
BOJ 12015 - 가장 긴 증가하는 부분수열2 (segtree) (0) | 2019.08.19 |