#include #include #include using namespace std; struct node { int idx; long long cost; int pop; node(){} node(int _idx, long long _cost, int _pop) { idx=_idx; cost=_cost; pop=_pop; } bool operator <(const node &tmp)const { return cost>tmp.cost; } }; vector>par[100005]; long long dis[100005][2]; int main() { ios_base::sync_with_stdio(false); long long a,b,x,y,z; cin>>a>>b; int i, j; for( i=0;i>x>>y>>z; par[x].push_back({y,z}); } priority_queueQ; Q.push(node(1,0,0)); for( i=0;i<=a;i++) { for( j=0;j<2;j++) { dis[i][j]=1e18; } } long long sosed, r; dis[1][0]=0; dis[1][1] = 0; while(!Q.empty()) { node teme=Q.top(); Q.pop(); if(teme.cost > dis[teme.idx][teme.pop]) continue; for( i=0;i