Advertisement
Josif_tepe

Untitled

May 27th, 2021
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include <iostream>
  2. #include<vector>
  3. #include<queue>
  4. using namespace std;
  5. struct node
  6. {
  7.     int idx;
  8.     int distance;
  9.     int snow;
  10.     node(){}
  11.     node(int _idx, int _distance, int _snow)
  12.     {
  13.         idx=_idx;
  14.         distance=_distance;
  15.         snow=_snow;
  16.     }
  17.     bool operator < (const node &tmp) const{
  18.         return distance > tmp.distance;
  19.     }
  20. };
  21. int main()
  22. {
  23.     int n,m;
  24.     cin>>n>>m;
  25.     vector<node>v[n+1];
  26.     for(int i=0;i<m;i++)
  27.     {
  28.        int a,b,c,d;
  29.        cin>>a>>b>>c>>d;
  30.        v[a].push_back(node(b,c,d));
  31.        v[b].push_back(node(a,c,d));
  32.     }
  33.     priority_queue<node>pq;
  34.     pq.push(node(1,0,1));
  35.     bool visited[n+1][2];
  36.     for(int i=0;i<n+1;i++)
  37.     {
  38.         for(int j=0;j<2;j++)
  39.         {
  40.             visited[i][j]= false;
  41.         }
  42.     }
  43.     while(!pq.empty())
  44.     {
  45.         node c=pq.top();
  46.         pq.pop();
  47.         if(c.idx==n)
  48.         {
  49.             cout<<c.distance<<endl;
  50.             if(c.snow==1)
  51.             {
  52.                 cout<<"DA";
  53.             }else
  54.             {
  55.                 cout<<"NE";
  56.                             }
  57.             return 0;
  58.  
  59.                         }
  60.                         visited[c.idx][c.snow] = true;
  61.                         for(int i=0;i< v[c.idx].size();i++)
  62.                         {
  63.                             int sosed=v[c.idx][i].idx;
  64.                             int dist=v[c.idx][i].distance;
  65.                             int sn=v[c.idx][i].snow;
  66.                             if(c.snow==1 && sn==1)
  67.                             {
  68.  
  69.  
  70.                             }else
  71.                             {
  72.  
  73.                               sn=0;
  74.                             }
  75.                             if(!visited[sosed][sn])
  76.                             {
  77.                                pq.push(node(sosed,dist+c.distance,sn));
  78.                             }
  79.                         }
  80.  
  81.  
  82.                     }
  83.                     return 0;
  84.                 }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement