#include #define int long long using namespace std; using P=tuple; constexpr int INF=1e18; struct edge{int to,cost,animal;}; bool chmin(int&a,int b){return a>b?a=b,true:false;} vector G[1<<20]; int dist[1<<20][2]; signed main(){ int N,M; cin>>N>>M; for(int i=0;i>a>>b>>c>>d; G[--a].push_back({--b,c,d}); G[b].push_back({a,c,d}); } fill(dist[0],dist[N],INF); dist[N-1][0]=0; priority_queue,greater

> Q; Q.push({0,N-1,0}); while(!Q.empty()){ auto[c,v,a]=Q.top(); Q.pop(); if(dist[v][a]