on
[1753] 최단경로
[1753] 최단경로
#include < queue >
#include < vector >
#include < iostream >
using namespace std ;
#define INF 100000000
priority_queue < pair < int , int > > q;
vector < pair < int , int > > v[ 20005 ];
int d[ 20005 ];
int n, m, s;
int main( void ) {
int i, j, a, b, c,cost,num,next, ncost;
cin > > n > > m > > s;
for (i = 0 ; i < m; i + + ) {
cin > > a > > b > > c;
v[a]. push_back ( make_pair (b, c));
}
for (i = 1 ; i < = n; i + + )
d[i] = INF;
d[s] = 0 ;
q.push( make_pair ( 0 , s));
while ( ! q.empty()) {
cost = - q.top().first;
num = q.top().second;
q. pop ();
for (i = 0 ; i < v[num]. size (); i + + ) {
next = v[num][i].first;
ncost = v[num][i].second;
if (d[next] > cost + ncost) {
d[next] = cost + ncost;
q.push( make_pair ( - d[next], next));
}
}
}
for (i = 1 ; i < = n; i + + ) {
if (d[i] = = INF) cout < < "INF" < < "
" ;
else cout < < d[i] < < "
" ;
}
return 0 ;
}
from http://dizlet.tistory.com/68 by ccl(A) rewrite - 2021-09-13 18:26:11