-
algospot - nthlonAlgorithm/알고스팟 2020. 1. 20. 06:0812345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273//algospot - nthlon#include <iostream>#include <vector>#include <queue>using namespace std;#define INF 1000000int M;vector<vector<pair<int, int>>> adj;void init(){cin >> M;adj = vector<vector<pair<int, int>>>(400);int x, y, gap;for(int i = 0; i<M; i++){cin >> x >> y;gap = x-y;for(int j = 1; j<400; ++j){if(j+gap < 1 || j+gap >= 400) continue;adj[j].push_back(make_pair(j+gap, x));}adj[0].push_back(make_pair(200+gap, x));}}void dijkstra(){vector<int> bucket(400, INF);priority_queue<pair<int, int>> pq;bucket[0] = 0;pq.push(make_pair(0, 0));int here, cost;while(!pq.empty()){here = pq.top().second;cost = -pq.top().first;pq.pop();if(cost > bucket[here]) continue;for(int i = 0; i<adj[here].size(); ++i){int there = adj[here][i].first;int c = adj[here][i].second;if(c+cost < bucket[there]){bucket[there] = c+cost;pq.push(make_pair(-(c+cost), there));}}}if(bucket[200] == INF)cout << "IMPOSSIBLE" << "\n";elsecout << bucket[200] << "\n";}int main(){int C; cin >> C;for(int t_num = 0; t_num < C; ++t_num){init();dijkstra();}}
cs https://algospot.com/judge/problem/read/NTHLON
algospot.com :: NTHLON
철인 N종 경기 문제 정보 문제 두 나라 A국과 B국은 항상 사이가 좋지 않은데, 국민들 간에 쌓인 감정을 털어버리기 위해 양국의 대표 선수들이 한 명씩 나와 친선 스포츠 경기를 하기로 했다. 채택된 종목은 철인 N종 경기이다. 철인 N종 경기의 코스는 여러 구간들로 구성되는데, 각 선수는 각 구간에서 정해진 종목을 이용해 결승점으로 이동해야 한다. 예를 들어, 어떤 철인 N종 경기의 코스는 수영 1500km, 마라톤 42.195km, 크로스컨트리 60k
algospot.com
nthlon
그래프로 모델링을 해서 해결합니다.
종목을 완주하는데 걸리는 시간이 1~200 를 벗어나지 않기 떄문에
두 선수 사이의 시간의 차는 -199~199 를 벗어나지 않습니다.
두 선수 사이의 시간의 차를 정점으로 하고, 종목을 간선으로 하는 그래프를 만들수 있습니다.
간선의 가중치는 두 선수중 아무나 선택해 해당 종목에서 걸리는 시간으로 합니다.
시작 정점을 위한 가상의 정점을 만들고, 모든 종목에 대해 발생할 수 있는 시간 차, 즉 정점과
연결시킵니다.
위의 그래프에서 가상의 정점과 시간의 차가 0을 나타내는 정점까지의 최단거리가 문제에서의 답입니다!
'Algorithm > 알고스팟' 카테고리의 다른 글
algospot - promises (0) 2020.01.29 algospot - drunken (0) 2020.01.29 algospot - firetrucks (0) 2020.01.20 algospot - clocksync (0) 2020.01.20 algospot - gallery (0) 2020.01.20