Submission #9196

#TimeUsernameProblemLanguageResultExecution timeMemory
9196roott76Your life (kriii2_Y)C++98
4 / 4
220 ms8532 KiB
#include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; int N; vector<pair<int, int> > adj[100001]; vector<int> dijkstra(int src) { vector<int> dist(N, 999999999); dist[src] = 0; priority_queue<pair<int, int> > pq; pq.push(make_pair(0, src)); while(!pq.empty()) { int cost = -pq.top().first; int here = pq.top().second; pq.pop(); if(dist[here] < cost) continue; for(int i=0; i<adj[here].size(); i++) { int there = adj[here][i].first; int nextDist = cost + adj[here][i].second; if(dist[there] > nextDist) { dist[there] = nextDist; pq.push(make_pair(-nextDist, there)); } } } return dist; } int main() { int M; cin >> N >> M; for(int i=0; i<M; i++) { int a, b, c = 1; cin >> a >> b; adj[a-1].push_back(make_pair(b-1, c)); } vector<int> Dist = dijkstra(0); if(N == 1) cout << "0"; else if(Dist[N-1] == 999999999) cout << "-1"; else cout << Dist[N-1]; cout << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...