就错了第三个测试点
6 8 1 0 1 0 1 100 0 1 0 -2 0 0 1 4 1 2 4 0 3 4 -1 1 5 1 2 5 -1 3 5 -1 4 6 1 5 6 1 正确答案:6 1
我的答案:NULL
求大神帮助啊!!!
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node
{
int to,w,next;
}edg[203];
int head[103],C[103],U[103],ru[103],ans[103],L=1;
queue<int>q;
void add(int u,int v,int h)
{
edg[L].to=v;
edg[L].w=h;
edg[L].next=head[u];
head[u]=L++;
}
int main()
{
int n,m,u,v,h,k=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
q.push(i);
cin>>C[i]>>U[i];
if(C[i]) U[i]=0;
}
for(int i=0;i<m;i++)
{
cin>>u>>v>>h;
add(u,v,h),ru[v]++;
}
while(!q.empty())
{
int x=q.front();
q.pop();
if(ru[x]) q.push(x);
else
{
C[x]-=U[x];
if(!head[x]) ans[k++]=x;
else
for(int i=head[x];i>0;i=edg[i].next)
C[edg[i].to]+=C[x]*edg[i].w,ru[edg[i].to]--;
}
}
bool flag=false;
sort(ans,ans+k);
for(int i=0;i<k;i++)
if(C[ans[i]]>0)
{
flag=true;
cout<<ans[i]<<" "<<C[ans[i]]<<endl;
}
if(!flag) cout<<"NULL"<<endl;
return 0;
}