#include using namespace std; #define REP(i,n) for(int i=0;i<(n);i++) #define ALL(v) v.begin(),v.end() using ll=long long; const long long LINF=1e18; typedef pair P; int main(){ int n,m;cin>>n>>m; vector a(m),b(m),c(m),x(m); REP(i,m)cin>>a[i]>>b[i]>>c[i]>>x[i]; vector

g[n*2]; REP(i,m)a[i]--,b[i]--; REP(i,m){ g[a[i]].push_back(P(b[i],c[i])); g[b[i]].push_back(P(a[i],c[i])); g[a[i]+n].push_back(P(b[i]+n,c[i])); g[b[i]+n].push_back(P(a[i]+n,c[i])); if(x[i])g[a[i]].push_back(P(b[i]+n,c[i])); if(x[i])g[b[i]].push_back(P(a[i]+n,c[i])); } vector d(n*2,LINF); d[n-1]=0; priority_queue,greater

> que; que.push(P(0,n-1)); while(que.size()){ P p=que.top();que.pop(); ll idx=p.second,va=p.first; if(d[idx]va+p.second){ d[p.first]=va+p.second; que.push(P(d[p.first],p.first)); } } } REP(i,n-1)cout<