没开O2全对开了全错是为啥
#include <bits/stdc++.h>
using namespace std;
int t;
const int maxnode=505;
const int maxline=3000;
int head[maxnode],k;
struct edge{
int to,pre,w;
}line[maxline*3];
void addline(int u,int v,int value)
{
k++;
line[k].to=v;
line[k].pre=head[u];
line[k].w=value;
head[u]=k;
}
int dis[maxnode*2];
bool vis[maxnode*2];
int cnt[maxnode*2];
int n,m;
queue <int>q;
bool dfs()
{
memset(dis,0x3f,sizeof(dis));
memset(vis,0,sizeof(vis));
memset(cnt,0,sizeof(cnt));
dis[1]=0;
vis[1]=1;
q.push(1);
while(!q.empty())
{
int x=q.front();
q.pop();
vis[x]=0;
for(int i=head[x];i;i=line[i].pre)
{
int v=line[i].to;
if(dis[v]>dis[x]+line[i].w)
{
dis[v]=dis[x]+line[i].w,cnt[v]=cnt[x]+1;
if(cnt[v]>=n)
return 1;
if(!vis[v])
q.push(v),vis[v]=1;
}
}
}
return 0;
}
int main()
{
ios::sync_with_stdio(false);
cin>>t;
while(t--)
{
int w;
cin>>n>>m>>w;
for(int i=0;i<=maxnode;i++)
head[i]=0;
for(int i=0;i<=maxline;i++)
line[i].pre=0;
for(int i=1;i<=m;i++)
{
int u,v,value;
cin>>u>>v>>value;
addline(u,v,value);
addline(v,u,value);
}
for(int i=1;i<=w;i++)
{
int u,v,p;
cin>>u>>v>>p;
addline(u,v,-p);
}
if(dfs())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}