Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define FOR(i, a, b) for(int i = (a); i < (b); ++i)
  5. #define REP(i, n) FOR(i, 0, n)
  6. #define _ << " " <<
  7.  
  8. typedef long long ll;
  9. typedef pair<int, int> point;
  10.  
  11. const int MAXN = 100005;
  12.  
  13. int test, n, m, a, b, c, poc, kraj;
  14. int dist[MAXN], bio[MAXN];
  15. priority_queue <point> Q;
  16.  
  17. void dijkstra(){
  18. vector <point> edge[MAXN];
  19. memset(bio, 0, sizeof(bio));
  20. memset(dist, 0, sizeof(dist));
  21. int d, cvor;
  22.  
  23. REP(i, m){
  24. cin >> a >> b >> c;
  25. edge[a].push_back(point(b, c));
  26. edge[b].push_back(point(a, c));
  27. }
  28.  
  29. Q.push(point(0, poc));
  30. while(!Q.empty()){
  31. while(!Q.empty() && bio[Q.top().second]) Q.pop();
  32. if(Q.empty()) break;
  33. cvor = Q.top().second;
  34. d = -Q.top().first;
  35. Q.pop();
  36.  
  37. bio[cvor] = 1;
  38. dist[cvor] = d;
  39.  
  40. REP(i, edge[cvor].size()){
  41. int ncvor = edge[cvor][i].first;
  42. if(bio[ncvor]) continue;
  43. Q.push(point(-(d + edge[cvor][i].second), ncvor));
  44. }
  45. }
  46. if(poc == kraj)
  47. cout << 0;
  48. else{
  49. if(dist[kraj] == 0)
  50. cout << "NONE";
  51. else
  52. cout << dist[kraj];
  53. }
  54. cout << "\n";
  55. }
  56.  
  57. int main(){
  58. ios_base::sync_with_stdio(false);
  59. cin >> test;
  60. REP(i, test){
  61. cin >> n >> m >> poc >> kraj;
  62. dijkstra();
  63. }
  64. return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement