link : https://www.acmicpc.net/problem/1238
파티 성공
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 6860 | 2826 | 1923 | 40.587% |
문제
N개의 숫자로 구분된 각각의 마을에 한 명의 학생이 살고 있다.
어느 날 이 N명의 학생이 X (1 ≤ X ≤ N)번 마을에 모여서 파티를 벌이기로 했다. 이 마을 사이에는 총 M개의 단방향 도로들이 있고 i번째 길을 지나는데 Ti(1 ≤ Ti ≤ 100)의 시간을 소비한다.
각각의 학생들은 파티에 참석하기 위해 걸어가서 다시 그들의 마을로 돌아와야 한다. 하지만 이 학생들은 워낙 게을러서 최단 시간에 오고 가기를 원한다.
이 도로들은 단방향이기 때문에 아마 그들이 오고 가는 길이 다를지도 모른다. N명의 학생들 중 오고 가는데 가장 많은 시간을 소비하는 학생은 누구일지 구하여라.
입력
첫째 줄에 N(1 <= N <= 1,000), M(1 <= M <= 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어온다.
모든 학생들은 집에서 X에 갈수 있고, X에서 집으로 돌아올 수 있는 데이터만 입력으로 주어진다.
출력
첫 번째 줄에 N명의 학생들 중 오고 가는데 가장 오래 걸리는 학생의 소요시간을 출력한다.
예제 입력 1
4 8 2 1 2 4 1 3 2 1 4 7 2 1 1 2 3 5 3 1 2 3 4 4 4 2 3
예제 출력 1
10
다익스트라로 풀 수 있는 최단경로 문제이다.
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include<iostream> #include<queue> #include<vector> using namespace std; #define INF 987654321 int n,m,x; int a,b,c; int max_; int dist[1001][1001]; vector<pair<int,int>> v[1001]; void dijkstra(int start){ priority_queue<pair<int,int>> pq; pq.push({0,start}); while(!pq.empty()){ int now = pq.top().second; pq.pop(); for(int i=0;i<v[now].size();i++){ int now_val = dist[start][now] + v[now][i].second; int before_val = dist[start][v[now][i].first]; if(now_val < before_val){ dist[start][v[now][i].first] = now_val; pq.push({-now_val, v[now][i].first}); } } } } int main(){ ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m >> x; for(int i=0;i<m;i++){ cin >> a >> b >> c; v[a].push_back({b,c}); } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) dist[i][j] = INF; dist[i][i] = 0; dijkstra(i); } for(int i=1;i<=n;i++){ if(dist[i][x] != INF && dist[x][i] != INF) max_ = dist[i][x] + dist[x][i] > max_ ? dist[i][x] + dist[x][i] : max_; } cout << max_; return 0; } | cs |
'Programming > BOJ Solutions' 카테고리의 다른 글
[백준 10217번] KCM Travel (0) | 2018.10.02 |
---|---|
[백준 11657번] 타임머신 (0) | 2018.09.18 |
[백준 6497번] 전력난 (0) | 2018.09.16 |
[백준 1774번] 우주신과의 교감 (0) | 2018.09.06 |
[백준 2166번] 다각형의 면적 (0) | 2018.08.24 |