#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll i,m,a,b,q[101],f=1,r=0,v,c[101],u[101],w[101][101],wz=0;
ll n;
struct rec
{
int sl, jd;
}ans[101];
bool exist[101];
int cm(rec a, rec b)
{
return a.sl<b.sl;
}
int main()
{
memset(w,0x7f7f7f7f,sizeof(w));
memset(exist,0,sizeof(exist));
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>c[i]>>u[i];
if(c[i]!=0)
{
q[++r]=i;
exist[i]=1;
}
else
c[i]-=u[i];
}
for(i=1;i<=m;i++)
{
cin>>a>>b;
cin>>w[a][b];
}
while(f<=r)
{
v=q[f++];
exist[v]=0;
if(c[v]<=0)
continue;
for(i=1;i<=n;i++)
if (w[v][i]!=0x7f7f7f7f)
{
c[i]+=w[v][i]*c[v];
if (c[i]>0&&exist[i]==0)
{
q[++r]=i;
exist[i]=1;
}
}
bool flag=true;
for (i=1;i<=n;i++)
if (w[v][i]!=0x7f7f7f7f)
{
flag=false;
break;
}
if(flag==true)
{
wz++;
ans[wz].sl=v;
ans[wz].jd=c[v];
}
}
if(wz==0)
cout<<"NULL";
else
{
sort(ans+1,ans+wz+1,cm);
for(i=1;i<=wz;i++)
cout<<ans[i].sl<<" "<<ans[i].jd<<endl;
}
return 0;
}
为什么这样写2个wa,3个Re,而把long long 改为 int就过了,long long 和 int 不只是范围上的区别吗?