이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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);
cout << Dist[N-1] << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |