#include using namespace std; typedef long long LL; const int MAXN=1e3+10; const LL INF=1e15+7; const int mod=998244353; int n,m; LL x[100][100],y[100][100],z[100][100],tans; vector< pair > edge[MAXN]; int vis[MAXN],mx[MAXN]; LL dis[MAXN]; queue q; void SPFA(int s,int lim){ for(int i=1;i<=n;i++){ vis[i]=0; mx[i]=n+1; dis[i]=INF; } dis[s]=0; mx[s]=0; q.push(s); while(!q.empty()){ int u=q.front(); q.pop(); vis[u]=0; for(int i=0;idis[u]+d){ dis[v]=dis[u]+d; if (u==s) mx[v]=0; else mx[v]=max(mx[u],u); if (vis[v]==0){ vis[v]=1; q.push(v); } } else if (dis[v]==dis[u]+d){ int nv=0; if (u==s) nv=0; else nv=max(mx[u],u); if (nvy[i][k]+y[k][j]){ y[i][j]=y[i][k]+y[k][j]; } } } } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if (x[i][j]==y[i][j]){ z[i][j]=min(z[i][j],lim); } } void check(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ x[i][j]=INF; if (i==j) x[i][j]=0; } } for(int i=1;i<=n;i++){ for(int j=0;jx[i][k]+x[k][j]){ x[i][j]=x[i][k]+x[k][j]; } } } } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) z[i][j]=n; for(int i=0;i<=n;i++){ check1(i); } tans=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ tans+=z[i][j]; } } int main(){ default_random_engine dre(time(0)); uniform_int_distribution uidd(1,10); int T; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); uniform_int_distribution<> uid(1,n); for(int i=1;i<=n;i++) edge[i].clear(); for(int i=1;i<=m;i++){ int a,b; LL c; //a=uid(dre); //b=uid(dre); //c=uidd(dre); //cout<