# include # include # include # include # include # include # include # include # include # include # include # include using namespace std; # define LL long long const int N=1005; const int INF=1000000000; const LL oo=1000000000000005; struct Edge { int to,nxt; LL c,d; }; int n,m,cnt; Edge e[N*200]; LL d[N*100]; int head[N*100]; vectorpre[N*100]; void add(int u,int v,LL d,LL c) { e[cnt].to=v; e[cnt].d=d; e[cnt].c=c; e[cnt].nxt=head[u]; head[u]=cnt++; } void solve() { for(int i=0;iq; q.push(0); while(!q.empty()) { int u=q.front(); q.pop(); for(int i=head[u];i!=-1;i=e[i].nxt){ int v=e[i].to; if(d[v]>d[u]+e[i].d){ d[v]=d[u]+e[i].d; q.push(v); } } } q.push(0); while(!q.empty()){ int u=q.front(); q.pop(); for(int i=head[u];i!=-1;i=e[i].nxt){ int v=e[i].to; if(d[v]==d[u]+e[i].d){ pre[v].push_back(i); q.push(v); } } } LL ans1=0,ans2=0; for(int i=0;i