diff --git a/AcWing/851/851.cpp b/AcWing/851/851.cpp new file mode 100644 index 00000000..c13ffb76 --- /dev/null +++ b/AcWing/851/851.cpp @@ -0,0 +1,38 @@ +#include + +using namespace std; + +int n, m, u, v, w, dist[100005]; +vector> g[100005]; + +void spfa() { + memset(dist, 0x3f, sizeof(dist)); + dist[1] = 0; + queue q; + q.push(1); + while (!q.empty()) { + int t = q.front(); + q.pop(); + for (auto i : g[t]) { + if (dist[i.first] > dist[t] + i.second) { + dist[i.first] = dist[t] + i.second; + q.push(i.first); + } + } + } +} + +int main() { + cin >> n >> m; + for (int i = 0; i < m; i++) { + cin >> u >> v >> w; + g[u].push_back(make_pair(v, w)); + } + spfa(); + if (dist[n] == 0x3f3f3f3f) { + cout << "impossible" << endl; + } else { + cout << dist[n] << endl; + } + return 0; +}