为什么会错
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define vd void
#define bl bool
#define il inline
#define N 110
#define M 10010
il int read(){
int x=0;
bool w=1;
char ch=getchar();
while(ch<48||ch>57){
if(ch==45) w=0;
ch=getchar();
}while(ch>47&&ch<58){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return w?x:(-x);
}
il vd write(int x){
if(x<0){
putchar(45);
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+48);
}
struct edge{
int to,nxt,v;
}s[M];
int n=read(),m=read(),k[N],kt,a[N],b[N],tot,U[N],h[N],D[N],vis;
queue<int> q;
bl print=1;
il vd lj(int l,int r,int w){
tot++;
s[tot].to=r;
s[tot].v=w;
s[tot].nxt=h[l];
h[l]=tot;
}
signed main(){
for(int i=1;i<=n;i++){
a[i]=read(),b[i]=read();
// if(a[i]!=0) b[i]=0;
// else a[i]-=b[i];
}
while(m--){
int x=read(),y=read(),w=read();
lj(x,y,w);
U[y]++;
D[x]++;
// a[y]=0;
}
for(int i=1;i<=n;i++) if(!U[i]) q.push(i);
while(!q.empty()){
int x=q.front();
// cout<<a[4]<<endl;
// cout<<x<<endl;
q.pop();
// v[x]=0;
if(!D[x]){
if(a[x]!=0) print=0;
if(a[x]>0) k[++kt]=x;
continue;
}
if(a[x]<=0) continue;
for(int i=h[x];i!=0;i=s[i].nxt){
int t=s[i].to;
a[t]+=s[i].v*a[x];
// cout<<a[t]<<endl;
U[t]--;
D[x]--;
if(!U[t]) q.push(t),a[t]-=b[t];
}
}
if(!kt) puts("NULL");
else{
sort(k+1,k+1+kt);
for(int i=1;i<=kt;i++){
write(k[i]);
putchar(32);
write(a[k[i]]);
putchar(10);
}
}
return 0;
}
//请大佬帮忙修改一下代码