对于单点值最大值的一点问题
查看原帖
对于单点值最大值的一点问题
445864
美少女☁楼主2021/3/10 16:55
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);
		}
2021/3/10 16:55
加载中...