CCCPaste

Untitled

#include 
#include 
#include 
#include 
#include 
using namespace  std;
struct node {
    int index,shortest_path,snow;

    node(int i,int p,int s){
        index = i;
        shortest_path = p;
        snow = s;
    }

    bool operator < (const node &tmp)const{
        return shortest_path > tmp.shortest_path;
    }
};
struct broevi {
    int b,c,d;

    broevi(int _b,int _c, int _d){
        b = _b;
        c = _c;
        d = _d;
    }
};
int main() {
    int n, m;
    cin >> n >> m;
    vector graph [n + 5];
    for (int i = 0; i < m; i++) {
        int a,b,c,d;
        cin >> a >> b >> c >> d;
        graph[a].push_back(broevi(b,c,d));
        graph[b].push_back(broevi(a,c,d));
    }
   priority_queue pq;
   pq.push(node(1,0,1));

   vector visited (n+1, false);
   vector distance ( n+1,2e9);

   while (!pq.empty()){
       node current = pq.top();
       pq.pop();

       visited[current.index] = true;
       if(current.index == n && current.snow == 1){
           cout << current.shortest_path << endl;
           cout << "DA" << endl;
           break;
       }
       if(current.index == n && current.snow == 0){
           cout << current.shortest_path << endl;
           cout << "NE" << endl;
           break;
       }
       for (int i = 0; i