#include<bits/stdc++.h>
const int MAXN=5e3+5;
const int INF=0x3f3f3f3f;
typedef std::pair<int,int> PII;
int T,n,m,dis[MAXN],cnt[MAXN];
bool vis[MAXN];
std::vector<PII> e[MAXN];
inline bool spfa(int s)
{
for(int i=0;i<=n+1;i++)
vis[i]=0,
cnt[i]=0,
dis[i]=INF;
dis[s]=0,vis[s]=1;
std::queue<int> q;
q.push(s);
while(q.size())
{
int u=q.front();
q.pop();
vis[u]=0;
for(auto it:e[u])
{
int v=it.first,w=it.second;
if(dis[v]>dis[u]+w)
{
dis[v]=dis[u]+w;
if(!vis[v])
{
vis[v]=1;
if(++cnt[v]==n+1) return 0;
q.push(v);
}
}
}
}
return 1;
}
inline void solve()
{
scanf("%d%d",&n,&m);
for(int i=0;i<=n+1;i++) e[i].clear();
for(int i=0;i<=n;i++)
e[n+1].push_back(std::make_pair(i,0));
for(int _=1,u,v,w;_<=m;_++)
{
scanf("%d%d%d",&u,&v,&w);
e[u-1].push_back(std::make_pair(v,w)),
e[v].push_back(std::make_pair(u-1,-w));
}
if(!spfa(n+1)) printf("false\n");
else printf("true\n");
}
int main()
{
scanf("%d",&T);
while(T--) solve();
return 0;
}
回复请 at 我。