Advertisement
Kaidul

10986

May 10th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.94 KB | None | 0 0
  1. // unsolved
  2. #include <algorithm>
  3. #include <bitset>
  4. #include <cctype>
  5. #include <cmath>
  6. #include <complex>
  7. #include <cstdio>
  8. #include <cstdlib>
  9. #include <cstring>
  10. #include <ctime>
  11. #include <deque>
  12. #include <fstream>
  13. #include <iostream>
  14. #include <list>
  15. #include <map>
  16. #include <memory>
  17. #include <queue>
  18. #include <set>
  19. #include <sstream>
  20. #include <stack>
  21. #include <string>
  22. #include <utility>
  23. #include <vector>
  24. #include <iomanip>
  25. using namespace std;
  26. /*** typedef ***/
  27. #define MEMSET_INF 127
  28. #define MEMSET_HALF_INF 63
  29. #define stream istringstream
  30. #define rep(i,n) for(__typeof(n) i=0; i<(n); i++)
  31. #define repl(i,n) for(__typeof(n) i=1; i<=(n); i++)
  32. #define FOR(i,a,b) for(__typeof(b) i=(a); i<=(b); i++)
  33. #define INF (1<<30)
  34. #define PI acos(-1.0)
  35. #define pb push_back
  36. #define ppb pop_back
  37. #define all(x) x.begin(),x.end()
  38. #define mem(x,y) memset(x,y,sizeof(x))
  39. #define eps 1e-9
  40. #define pii pair<int,int>
  41. #define pmp make_pair
  42. #define ft first
  43. #define sd second
  44. #define vi vector<int>
  45. #define vpii vector<pii>
  46. #define si set<int>
  47. #define msi map<string , int >
  48. #define mis map<int , string >
  49. typedef long long i64;
  50. typedef unsigned long long ui64;
  51. /** function **/
  52. #define SDi(x) sf("%d",&x)
  53. #define SDl(x) sf("%lld",&x)
  54. #define SDs(x) sf("%s",x)
  55. #define SD2(x,y) sf("%d%d",&x,&y)
  56. #define SD3(x,y,z) sf("%d%d%d",&x,&y,&z)
  57. #define pf printf
  58. #define sf scanf
  59. #define READ(f) freopen(f, "r", stdin)
  60. #define WRITE(f) freopen(f, "w", stdout)
  61. const i64 INF64 = (i64)1E18;
  62. const i64 INFFF = 1e16;
  63.  
  64. #define Max 20010
  65.  
  66. class Compare {
  67. public:
  68.     int operator() ( const pii& p1, const pii& p2 ) {
  69.         return p1.second > p2.second;
  70.     }
  71.  
  72. };
  73.  
  74. priority_queue <pii, vector<pii>, Compare> q;
  75. vector <pii> adj[Max];
  76. int dis[Max];
  77.  
  78. void reset() {
  79.     q = priority_queue <pii, vector<pii>, Compare> ();
  80.     rep(i, Max) {
  81.         dis[i] = INFFF;
  82.         adj[i].clear();
  83.     }
  84. }
  85.  
  86. int dijkstra(int src, int des) {
  87.     dis[src] = 0;
  88.     q.push(pii(src, dis[src]));
  89.     while(!q.empty()) {
  90.         int u = q.top().first;
  91.         q.pop();
  92.         if(u == des) return dis[des];
  93.         rep(i, (int)adj[u].size()) {
  94.  
  95.             int v = adj[u][i].first;
  96.             int cost = adj[u][i].second;
  97.             if(dis[v] > dis[u] + cost) {
  98.                 dis[v] = dis[u] + cost;
  99.                 q.push(pii(v, dis[v]));
  100.             }
  101.         }
  102.     }
  103.     return -1;
  104. }
  105.  
  106. int main() {
  107.     READ("input.txt");
  108.     int vertex, edge, u, v, cost, src, des, tcase, caseNo = 1;
  109.     SDi(tcase);
  110.     while(tcase--) {
  111.         cin >> vertex >> edge >> src >> des;
  112.         rep(i, edge) {
  113.             cin>> u >> v >> cost;
  114.             adj[u].pb(pii(v, cost));
  115.             adj[v].pb(pii(u, cost));
  116.         }
  117.         int result = dijkstra(src, des);
  118.         cout << "Case #" << caseNo << ": ";
  119.         if(result == -1) cout << "unreachable\n";
  120.         else cout << result << "\n";
  121.         caseNo++;
  122.         reset();
  123.     }
  124.     return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement