while(!q.empty())
{
u = q.front(), q.pop();
as = max(as, dp[u]);
for(int e = hed[u]; e; e = nxt[e])
{
v = to[e];
dp[v] = max(dp[v], dp[u] + (v <= n));
if(!--d[v]) q.push(v);
}
}
WA 成 20pt
改成
while(!q.empty())
{
u = q.front(), q.pop();
if(u > n) --dp[u];
as = max(as, dp[u]);
for(int e = hed[u]; e; e = nxt[e])
{
v = to[e];
dp[v] = max(dp[v], dp[u] + 1);
if(!--d[v]) q.push(v);
}
}
就 A 了