#include #define mo 998244353 #define INF 100000000000000ll using namespace std; typedef long long ll; struct edge{int go,w,next;} a[10000]; int cnt,End[10000]; inline void add(int u,int v,int w){ a[++cnt].go=v;a[cnt].w=w;a[cnt].next=End[u];End[u]=cnt; } int S,ans,n,m,q[2000005],in[2005]; bool flag[20005]; ll f[20005],ff[20005]; bool spfa(){ int h=0,t=1; for (int i=1;i<=n;i++) f[i]=INF,flag[i]=0; f[S]=0;q[1]=S;flag[S]=true; while (h!=t){ h++;int now=q[h]; for (int i=End[now];i;i=a[i].next){ int go=a[i].go; if (f[now]+a[i].w