#includeusing namespace std;const int maxn = 5e4 + 5;const int inf = 0x3f3f3f3f;int n, head[maxn], dis[maxn], cnt;struct node{ int to, w, next;} ed[maxn*4]; //数组开2*maxn超时,开大一点inline void add( int u, int v, int w ){ ed[cnt].to = v; ed[cnt].w = w; ed[cnt].next = head[u]; head[u] = cnt++;}inline int max( int a, int b ){ return a>b ? a:b;}inline int min( int a, int b ){ return a