快来帮我找bug
#include<bits/stdc++.h>
using namespace std;
struct edge{
int s,e,v,next;
}eg[10005];
int head[105];
int cnt;
int ru[105];
int chu[105];
void make(int s,int e,int v){
++cnt;
++chu[s];
++ru[e];
eg[cnt].s=s;
eg[cnt].e=e;
eg[cnt].v=v;
eg[cnt].next=head[s];
head[s]=cnt;
}
int n,p;
int c[105],u[105];
queue<int>q;
int main(){
scanf("%d%d",&n,&p);
for(int i=1;i<=n;++i)
scanf("%d%d",c+i,u+i);
for(int i=0;i<p;++i){
int s,e,v;
scanf("%d%d%d",&s,&e,&v);
make(s,e,v);
}
for(int i=1;i<=n;++i)
if(!ru[i])q.push(i);
while(!q.empty()){
int f=q.front();
q.pop();
for(int i=head[f];i;i=eg[i].next){
--ru[eg[i].e];
if(!ru[eg[i].e])q.push(eg[i].e);
if(c[f]>0)c[eg[i].e]+=eg[i].v*c[f];
}
}
bool flag=0;
for(int i=1;i<=n;++i){
if(!chu[i]&&c[i]-u[i]>0){
printf("%d %d\n",i,c[i]-u[i]);
flag=1;
}
}
if(!flag)printf("NULL");
return 0;
}