#include <iostream>
using namespace std;
const long long N=0x7f7f7f7f7f7f7f7f;
int w,n,m,u[1001],v[1001];
long long a[101][101],wI[1001];
int main() {
cin>>w;
while(w--)
{
bool b=true;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=N;
for(int i=1;i<=m;i++)
{
cin>>u[i]>>v[i]>>wI[i];
}
for(int i=1;i<=m;i++)
{
if(a[u[i]][v[i]]!=N&&a[u[i]][v[i]]!=wI[i]) {
b=false;
break;
}
a[u[i]][v[i]]=wI[i];
for(int j=1;j<=u[i]-1;j++)
if(a[j][u[i]-1]+a[u[i]][v[i]]!=a[j][v[i]]&&a[j][v[i]]!=N&&a[j][u[i]-1]!=N) {
b=false;
break;
}
if(!b) {
break;
}
for(int j=v[i]+1;j<=n;j++)
if(a[u[i]][v[i]]+a[v[i]+1][j]!=a[u[i]][j]&&a[v[i]+1][j]!=N&&a[u[i]][j]!=N) {
b=false;
break;
}
if(!b) {
break;
}
}
if(!b) cout<<"false"<<endl;
if(b) cout<<"true"<<endl;
}
return 0;
}
思路就是弄个数组记u到v的值