for(int i=1;i<=sum;i++)
{
if(in[i]==0) q.push(i);
ans[i] = cnt[i];
last[i] = maxn[i];
}
auto now = q.front();
q.pop();
for(int i=h[now];i!=-1;i=ne[i])
{
int spot = e[i];
if(ans[spot]<ans[now]+cnt[spot])
{
ans[spot] = ans[now]+cnt[spot];
last[spot] = max(last[now],maxn[spot]);这里没有这句话就是错的,但是last[spot]最开始就是是maxn[spot],再后续更新中完全用不到它,为何还需要这句话
last[spot] = max(last[spot],last[now]);
}
else if(ans[spot]==ans[now]+cnt[spot])
{
last[spot] = max(last[spot],last[now]);
}
in[spot]--;
if(in[spot]==0) q.push(spot);
}