문제
https://www.acmicpc.net/problem/10282
걸린 시간
00 : 48 : 25
풀이
C++
#include <bits/stdc++.h>
#define INF 1e9
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
void dijkstra(int src, vector<int>& dist, vector<pair<int, int>> adj[10001]){
priority_queue<pair<int, int>> pq;
pq.push(make_pair(src, 0));
dist[src] = 0;
while(!pq.empty()){
int here = pq.top().first;
int cost = -pq.top().second;
pq.pop();
if(dist[here] < cost) continue;
for(int i = 0; i < adj[here].size(); i++){
int there = adj[here][i].first;
int nextDist = cost + adj[here][i].second;
if(nextDist < dist[there]){
dist[there] = nextDist;
pq.push(make_pair(there, -nextDist));
}
}
}
int infect = 0, time = 0;
for(int dest = 1; dest < dist.size(); dest++){
if(dist[dest] != INF){
infect++;
time = max(time, dist[dest]);
}
}
cout << infect << " " << time << "\n";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int tc;
cin >> tc;
while(tc--){
int n, d, c;
cin >> n >> d >> c;
vector<int> dist(n+1, INF);
vector<pair<int, int>> adj[10001];
for(int i = 0; i < d; i++){
int a, b, s;
cin >> a >> b >> s;
adj[b].push_back(make_pair(a, s));
}
dijkstra(c, dist, adj);
}
return 0;
}
다익스트라를 잘 구현했지만 틀렸습니다를 받은 이유는 두가지가 있었다.
2차원 벡터에서 행에 해당하는 벡터의 개수만 초기화 하여 사용해 이전에 있던 값이 다음 테스트 케이스에 영향을 주었다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 2151번 거울 설치 (0) | 2020.10.30 |
---|---|
Baekjoon 3197번 백조의 호수 (0) | 2020.10.29 |
Baekjoon 4991번 로봇 청소기 (0) | 2020.10.27 |
Baekjoon 3584번 가장 가까운 공통 조상 (0) | 2020.10.26 |
Baekjoon 18500번 미네랄 2 (0) | 2020.10.24 |
댓글