diff --git "a/Programmers/\353\266\200\353\214\200\353\263\265\352\267\200/\353\266\200\353\214\200\353\263\265\352\267\200_\354\243\274\355\230\234\353\240\250.cpp" "b/Programmers/\353\266\200\353\214\200\353\263\265\352\267\200/\353\266\200\353\214\200\353\263\265\352\267\200_\354\243\274\355\230\234\353\240\250.cpp" new file mode 100644 index 0000000..6c4648e --- /dev/null +++ "b/Programmers/\353\266\200\353\214\200\353\263\265\352\267\200/\353\266\200\353\214\200\353\263\265\352\267\200_\354\243\274\355\230\234\353\240\250.cpp" @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; +typedef pair pii; +typedef long long ll; + +vector g[100001]; +int N; +int dist[100001]; + +priority_queue,greater<>> q; + +void dijkstra(int src){ + for(int i=0;i<=N;i++) dist[i]=INT_MAX; + + q.push({0,src}); + dist[src]=0; + + while(!q.empty()){ + int u=q.top().second; + int src_u=q.top().first; + q.pop(); + + if(dist[u] solution(int n, vector> roads, vector sources, int destination) { + //init + N=n; + for(int i=0;i 각 정점사이 최단거리 구하기: 다익스트라 + dijkstra(destination); + //2. sources -> dist[] 구해서 ans에 넣기 + vector answer; + for(int src:sources){ + if(dist[src]==INT_MAX) dist[src]=-1; + answer.push_back(dist[src]); + } + + + return answer; +}