Advertisement
Iloominatry

[Incomplete] George

Jul 21st, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <queue>
  4. #include <utility>
  5. #define ii pair<int, int>
  6. #define MAX 1e9
  7. using namespace std;
  8.  
  9. vector < vector<ii> > matrix;
  10. int N;
  11. int visit_time[1005];
  12.  
  13.  
  14. void calculate_time(int st){
  15.     visit_time[0].second = 0;
  16.     for (int i = 1; i < st; i++){
  17.         visit_time[i].second = visit_time[i - 1] + matrix[visit_time[i - 1]][visit_time[i]].second;
  18.     }
  19. }
  20.  
  21. int dijkstra(int start, int target){
  22.    
  23.     vector<int> dist;
  24.     dist.resize(N, MAX);
  25.     priority_queue <ii> pq;
  26.     pq.push(ii(0, start));
  27.  
  28.     while (!pq.empty()){
  29.         ii front = pq.top(); pq.pop();
  30.         int d = -front.first, u = front.second;
  31.         if (d > dist[u]) continue;
  32.  
  33.         for (int i = 0; i < matrix[u].size(); i++){
  34.             ii v = matrix[u][i];
  35.             if (dist[u] + v.second < dist[v.first])
  36.                 dist[v.first] = dist[u] + v.second;
  37.  
  38.             pq.push(ii(-dist[v.first], v.first));
  39.         }
  40.     }
  41.  
  42.     return dist[target];
  43. }
  44.  
  45.  
  46. int main(){
  47.     int M,start,target,t_start,g_streets;
  48.     scanf("%d %d",&N,&M);
  49.     scanf("%d %d %d %d", &start, &target, &t_start, &g_streets);
  50.  
  51.     for(int i = 0; i < g_streets; i++)
  52.         scanf("%d", &visits[i].first);
  53.  
  54.     for (int i = 0; i < M; i++){
  55.         int u, v, t;
  56.         scanf("%d %d %d", &u, &v, &t);
  57.         matrix[u].push_back(ii(v, t));
  58.         matrix[v].push_back(ii(u, t));
  59.     }
  60.     calculate_time();
  61.     printf("%d\n", dijkstra(start, target));
  62.  
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement