#include<stdio.h>
int dui[1000]={0},cc[1000]={0},jl[1000]={0},sjy[1000][1000]={0},wi[1000][1000]={0};
int main()
{
int n,p,i,j,k,u,c,t=0,w,l,r,sc,allz,ii;
scanf("%d %d",&n,&p);
for(i=1;i<=n;i++){
scanf("%d %d",&c,&u);
sjy[i][1]=c; sjy[i][2]=u;
if(c!=0){
t++;
dui[t]=i;
jl[i]=1;
sjy[i][2]=0;
}
}
for(i=1;i<=p;i++){
scanf("%d %d %d",&ii,&j,&w);
wi[ii][j]=w;
wi[j][ii]=w;
}
l=1;r=t;
while(1)
{
sc=dui[l];
sjy[sc][1]-=sjy[sc][2];
for(i=1;i<=n;i++){
if(i==p){
i=p;
}
if(wi[sc][i]!=0&&sjy[sc][1]>0){
sjy[i][1]+=wi[sc][i]*sjy[sc][1];
cc[sc]=-1;
if(!jl[i]){
dui[++r]=i;
jl[i]=1;
}
}
wi[sc][i]=0;
wi[i][sc]=0;
}
l++;
if(l>r)break;
}
allz=1;
for(i=1;i<=n;i++){
if(cc[i]!=-1){
if(sjy[i][1]>0){
allz=0;
printf("%d %d\n",i,sjy[i][1]);
}
}
}
if(allz)printf("NULL\n");
return 0;
}
WIKIOI P1088题解
最新推荐文章于 2022-02-13 23:55:58 发布