#include<bits/stdc++.h>
using namespace std;
struct pt{
int w,t;
};
struct point{
int u,w;
};
point p[5200];
vector<pt> v1[5200];
long long cnt[5200],zc[5200],ans[5200],cnt2[5200];
bool vis[5200];
queue<int> q;
priority_queue<int,vector<int>,greater<int> > pq;
void sc(int x){
int siz=v1[x].size();
for(int i=0;i<siz;i++){
cnt[v1[x][i].t]--;
if(ans[x]>0){
ans[v1[x][i].t]+=(ans[x]*v1[x][i].w);
}//下一个点传输
if(cnt[v1[x][i].t]==0){
ans[v1[x][i].t]-=p[v1[x][i].t].u;
q.push(v1[x][i].t);
}//下一个点删完
}
}
void topsort(){
while(q.size()!=0){
sc(q.front());
q.pop();
}
}
int main(){
int n,m,x,y;
cin>>n>>m;
int v,u;
for(int i=1;i<=n;i++){
cin>>v>>u;
if(v!=0){
q.push(v);
ans[i]=v;
}
p[i].u=u;
p[i].w=v;
}
pt tmp;
for(int i=1;i<=m;i++){
cin>>u>>tmp.t>>tmp.w;
v1[u].push_back(tmp);
cnt[tmp.t]++;//rd;
cnt2[u]++;//cd;
}
for(int i=1;i<=n;i++){
if(cnt2[i]==0){
pq.push(i);
}
}
topsort();
bool flag=1;
int tp;
while(pq.size()!=0){
tp=pq.top();
pq.pop();
if(ans[tp]<=0){
continue;
}
flag=0;
cout<<tp<<" "<<ans[tp]<<endl;
}
if(flag){
cout<<"NULL";
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct pt{
int w,t;
};
struct point{
int u,w;
};
point p[5200];
vector<pt> v1[5200];
long long cnt[5200],zc[5200],ans[5200],cnt2[5200];
bool vis[5200];
queue<int> q;
priority_queue<int,vector<int>,greater<int> > pq;
void sc(int x){
int siz=v1[x].size();
for(int i=0;i<siz;i++){
cnt[v1[x][i].t]--;
if(ans[x]>0){
ans[v1[x][i].t]+=(ans[x]*v1[x][i].w);
}//下一个点传输
if(cnt[v1[x][i].t]==0){
ans[v1[x][i].t]-=p[v1[x][i].t].u;
q.push(v1[x][i].t);
}//下一个点删完
}
}
void topsort(){
while(q.size()!=0){
sc(q.front());
q.pop();
}
}
int main(){
int n,m,x,y;
cin>>n>>m;
int v,u;
for(int i=1;i<=n;i++){
cin>>v>>u;
if(v!=0){
q.push(i);
ans[i]=v;
}
p[i].u=u;
p[i].w=v;
}
pt tmp;
for(int i=1;i<=m;i++){
cin>>u>>tmp.t>>tmp.w;
v1[u].push_back(tmp);
cnt[tmp.t]++;//rd;
cnt2[u]++;//cd;
}
for(int i=1;i<=n;i++){
if(cnt2[i]==0){
pq.push(i);
}
}
topsort();
bool flag=1;
int tp;
while(pq.size()!=0){
tp=pq.top();
pq.pop();
if(ans[tp]<=0){
continue;
}
flag=0;
cout<<tp<<" "<<ans[tp]<<endl;
}
if(flag){
cout<<"NULL";
}
return 0;
}
快来不同