문제: icpc.me/10282
그래프가 주어지고 실패되는 A정점이 주어질 때 A정점에게 의존되는 모든 정점들이 실패되는데 이때 실패되는 정점 수와 실패가 전파되는 총 시간을 출력하는 문제이다.
A정점부터 다익스트라를 실행하여 값이 갱신될 때 마다 시간의 최댓값을 갱신해주면서 개수를 세주면 된다.
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 29 30 31 32 33 34 35 36 37 38 39 40 | #include <cstdio> #include <algorithm> #include <queue> #include <cstring> #include <vector> #define MAX_N 10000 using namespace std; int t, n, d, c, x, y, z, r, a; int dp[MAX_N + 1]; priority_queue<pair<int, int>>pq; int main(){ scanf("%d", &t); while (t--) { scanf("%d%d%d", &n, &d, &c); memset(dp, -1, sizeof(dp)); vector<vector<pair<int, int>>> vt; vt.resize(n + 1); for (int i = 0; i < d; i++) { scanf("%d%d%d", &x, &y, &z); vt[y].push_back({ x,z }); } r = a = 0; pq.push({ 0,c }); while (pq.size()) { int here = pq.top().second; int cost = -pq.top().first; pq.pop(); if (dp[here] != -1)continue; dp[here] = cost; r = max(r, dp[here]); a++; for (auto next : vt[here]) { if (dp[next.first] != -1)continue; pq.push({ -cost - next.second,next.first }); } } printf("%d %d\n", a, r); } return 0; } | cs |
'알고리즘 관련 > BOJ' 카테고리의 다른 글
BOJ)14433 한조 대기 중 (0) | 2017.02.06 |
---|---|
BOJ)14431 소수마을 (0) | 2017.02.06 |
BOJ)9202 Boggle (0) | 2017.02.04 |
BOJ)5052 전화번호 목록 (0) | 2017.02.03 |
BOJ)2662 기업투자 (0) | 2017.02.03 |