Advertisement
rdsedmundo

pontes09.cpp

Oct 24th, 2014
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5. #define INF 1<<20
  6.  
  7. using namespace std;
  8.  
  9. int main() {
  10.  
  11.     int n, m;
  12.     cin >> n >> m;
  13.  
  14.     n += 2;
  15.     int c[n][n];
  16.  
  17.     for(int i = 0; i < n; i++)
  18.         for(int j = 0; j < n; j++)
  19.             c[i][j] = INF;
  20.  
  21.     for(int i = 0; i < m; i++) {
  22.         int a, b, cost;
  23.         cin >> a >> b >> cost;
  24.    
  25.         c[a][b] = c[b][a] = cost;
  26.     }
  27.  
  28.     int d[n], vis[n], s = 0;
  29.     memset(vis, 0, sizeof vis);  
  30.  
  31.     for(int i = 0; i < n; i++)
  32.         d[i] = c[s][i];
  33.  
  34.     d[s] = 0;
  35.     vis[s] = 1;
  36.  
  37.     while (1) {
  38.         int mindist = INF, v;
  39.    
  40.         for(int i = 0; i < n; i++)
  41.             if(vis[i] == 0 && d[i] < mindist)
  42.                 mindist = d[i], v = i;
  43.        
  44.         if(vis[v])
  45.             break;
  46.  
  47.         vis[v] = 1;
  48.         for(int i = 0; i < n; i++)
  49.             if(c[v][i] < INF && vis[i] == 0)
  50.                                 d[i] = min(d[i], d[v] + c[i][v]);
  51.     }
  52.  
  53.     cout << d[n-1] << endl;
  54.  
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement