# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
39953 | 2018-01-24T23:05:02 Z | leejseo | 주유소 (KOI16_gas) | C++14 | 112 ms | 65536 KB |
#include <stdio.h> #include <algorithm> #include <vector> #include <queue> using namespace std; #define maxint 9E18 #define all(v) v.begin(), v.end() #define MAXV 2500 #define MAXE 4000 int V, E; int oil[MAXV]; struct Edge{ int to; long long weight; Edge (int t_, long long w_) {to = t_; weight = w_;} }; vector<Edge> cost_graph[MAXV]; struct Node{ int u; long long dist; Node (int u_, long long d_) {u = u_; dist = d_;} bool operator < (const Node &a) const {return dist > a.dist;} }; vector<Edge> adj[MAXV]; vector<long long> dijkstra(int start, vector<Edge> *adj_list){ priority_queue<Node> Q; vector <long long> dist(V, maxint); dist[start] = 0; Q.push(Node(start, 0)); while (!Q.empty()){ int u = Q.top().u; long long dist_u = Q.top().dist; Q.pop(); if (dist[u] < dist_u) { continue; } for (int i=0; i<adj_list[u].size(); i++){ int v = adj_list[u][i].to; long long dist_v = dist_u + adj_list[u][i].weight; if (dist_v < dist[v]){ dist[v] = dist_v; Q.push(Node(v, dist_v)); } } } return dist; } long long solve(){ for (int i=0; i<V; i++){ vector<long long> dist = dijkstra(i, adj); for (int j=0; j<V; j++){ if (j == i || dist[j] == maxint){ continue; } long long cost = dist[j] * oil[i]; cost_graph[i].push_back(Edge(j, cost)); } } return dijkstra(0, cost_graph)[V-1]; } int main(){ scanf("%d %d", &V, &E); for (int i=0; i<V; i++){ scanf("%d", &oil[i]); } for (int i=0; i<E; i++){ int fr, to, weight; scanf("%d %d %d", &fr, &to, &weight); fr--; to--; adj[fr].push_back(Edge(to, weight)); adj[to].push_back(Edge(fr, weight)); } long long r = solve(); printf("%lld\n", r); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2060 KB | Output is correct |
2 | Correct | 0 ms | 2060 KB | Output is correct |
3 | Correct | 0 ms | 2060 KB | Output is correct |
4 | Correct | 0 ms | 2060 KB | Output is correct |
5 | Correct | 0 ms | 2060 KB | Output is correct |
6 | Correct | 0 ms | 2060 KB | Output is correct |
7 | Correct | 0 ms | 2060 KB | Output is correct |
8 | Correct | 0 ms | 2060 KB | Output is correct |
9 | Correct | 0 ms | 2060 KB | Output is correct |
10 | Correct | 0 ms | 2060 KB | Output is correct |
11 | Correct | 0 ms | 2060 KB | Output is correct |
12 | Correct | 0 ms | 2060 KB | Output is correct |
13 | Correct | 0 ms | 2060 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Memory limit exceeded | 112 ms | 65536 KB | Memory limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Memory limit exceeded | 109 ms | 65536 KB | Memory limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2060 KB | Output is correct |
2 | Correct | 0 ms | 2060 KB | Output is correct |
3 | Correct | 0 ms | 2060 KB | Output is correct |
4 | Correct | 0 ms | 2060 KB | Output is correct |
5 | Correct | 0 ms | 2060 KB | Output is correct |
6 | Correct | 0 ms | 2060 KB | Output is correct |
7 | Correct | 0 ms | 2060 KB | Output is correct |
8 | Correct | 0 ms | 2060 KB | Output is correct |
9 | Correct | 0 ms | 2060 KB | Output is correct |
10 | Correct | 0 ms | 2060 KB | Output is correct |
11 | Correct | 0 ms | 2060 KB | Output is correct |
12 | Correct | 0 ms | 2060 KB | Output is correct |
13 | Correct | 0 ms | 2060 KB | Output is correct |
14 | Correct | 17 ms | 6304 KB | Output is correct |
15 | Correct | 18 ms | 6132 KB | Output is correct |
16 | Correct | 13 ms | 6140 KB | Output is correct |
17 | Correct | 55 ms | 6384 KB | Output is correct |
18 | Correct | 53 ms | 6392 KB | Output is correct |
19 | Correct | 21 ms | 6184 KB | Output is correct |
20 | Correct | 32 ms | 6184 KB | Output is correct |
21 | Correct | 26 ms | 6000 KB | Output is correct |
22 | Correct | 20 ms | 6184 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2060 KB | Output is correct |
2 | Correct | 0 ms | 2060 KB | Output is correct |
3 | Correct | 0 ms | 2060 KB | Output is correct |
4 | Correct | 0 ms | 2060 KB | Output is correct |
5 | Correct | 0 ms | 2060 KB | Output is correct |
6 | Correct | 0 ms | 2060 KB | Output is correct |
7 | Correct | 0 ms | 2060 KB | Output is correct |
8 | Correct | 0 ms | 2060 KB | Output is correct |
9 | Correct | 0 ms | 2060 KB | Output is correct |
10 | Correct | 0 ms | 2060 KB | Output is correct |
11 | Correct | 0 ms | 2060 KB | Output is correct |
12 | Correct | 0 ms | 2060 KB | Output is correct |
13 | Correct | 0 ms | 2060 KB | Output is correct |
14 | Memory limit exceeded | 112 ms | 65536 KB | Memory limit exceeded |
15 | Halted | 0 ms | 0 KB | - |