把用来判断最长路是否已经确定的st数组删掉就好了,因为可能还会被更新成更优解。
void dij()
{
queue<pii>q;
dist[id[s]]=sz[id[s]];
q.push({sz[id[s]],id[s]});
while(q.size())
{
int u=q.front().second;
q.pop();
for(auto v:g[u])
{
if(dist[v]<dist[u]+sz[v])
{
dist[v]=dist[u]+sz[v];
q.push({dist[v],v});
}
}
}
}