| 提出番号 | 1417 |
|---|---|
| 提出者 | square1001 |
| 言語 | C++ |
| 提出日時 | 2018-08-02 21:49:03 |
| 問題名 | (49)最短経路問題 |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 2ms | 8688KB |
| 2 | AC | 100% | 2ms | 8432KB |
| 3 | AC | 100% | 2ms | 8720KB |
| 4 | AC | 100% | 2ms | 7248KB |
| 5 | AC | 100% | 2ms | 7792KB |
| 6 | AC | 100% | 5ms | 8112KB |
| 7 | AC | 100% | 5ms | 7632KB |
| 8 | AC | 100% | 5ms | 7824KB |
| 9 | AC | 100% | 5ms | 8256KB |
| 10 | AC | 100% | 5ms | 8416KB |
| 11 | AC | 100% | 195ms | 45360KB |
| 12 | AC | 100% | 168ms | 45344KB |
| 13 | AC | 100% | 173ms | 45392KB |
| 14 | AC | 100% | 207ms | 45344KB |
| 15 | AC | 100% | 183ms | 41264KB |
| 16 | AC | 100% | 246ms | 45328KB |
| 17 | AC | 100% | 235ms | 45376KB |
| 18 | AC | 100% | 208ms | 45328KB |
| 19 | AC | 100% | 241ms | 45328KB |
| 20 | AC | 100% | 236ms | 45280KB |
| 21 | AC | 100% | 236ms | 45296KB |
| 22 | AC | 100% | 246ms | 45312KB |
| 23 | AC | 100% | 235ms | 45296KB |
| 24 | AC | 100% | 231ms | 45344KB |
| 25 | AC | 100% | 249ms | 45328KB |
| 26 | AC | 100% | 231ms | 45328KB |
| 27 | AC | 100% | 252ms | 45360KB |
| 28 | AC | 100% | 211ms | 45344KB |
| 29 | AC | 100% | 252ms | 45328KB |
| 30 | AC | 100% | 232ms | 45360KB |
#include <queue>
#include <vector>
#include <iostream>
using namespace std;
struct edge {
int to, cost;
};
struct state {
int pos; long long cost;
};
bool operator<(const state& s1, const state& s2) {
return s1.cost > s2.cost;
}
int main() {
int N, M, a, b, c;
cin >> N >> M;
vector<vector<edge> > G(N);
for (int i = 0; i < M; ++i) {
cin >> a >> b >> c; --a, --b;
G[a].push_back(edge{ b, c });
G[b].push_back(edge{ a, c });
}
vector<long long> dist(N, 1LL << 62); dist[0] = 0;
priority_queue<state> que; que.push(state{ 0, 0 });
while (!que.empty()) {
state u = que.top(); que.pop();
for (edge e : G[u.pos]) {
if (dist[e.to] > dist[u.pos] + e.cost) {
dist[e.to] = dist[u.pos] + e.cost;
que.push(state{ e.to, dist[e.to] });
}
}
}
cout << (dist[N - 1] == (1LL << 62) ? -1 : dist[N - 1]) << '\n';
return 0;
}