#include #define MOD 998244353 #define inf 0x3f3f3f3f3f3f3f3fLL using namespace std; typedef long long ll; struct Edge { int t,v,next; Edge() {} Edge(int a,int b,int c):t(a),v(b),next(c) {} }; Edge e[4005]; int head[1005]; struct Data { ll d; int v,id; Data() {} Data(ll a,int b,int c):d(a),v(b),id(c) {} bool operator < (const Data & b) const { if (d!=b.d) return d (const Data & b) const { if (d!=b.d) return d>b.d; if (v!=b.v) return v>b.v; return id>b.id; } }; Data dis[1005]; priority_queue ,greater > q; int dijkstra(int s,int n) { while (!q.empty()) q.pop(); for(int i=1;i<=n;i++) dis[i]=Data(inf,0,i); dis[s]=Data(0,0,s);q.push(dis[s]); while (!q.empty()) { Data t=q.top();q.pop(); if (dis[t.id]