只过了第一个点 怎么回事求助!

P3387 【模板】缩点

@[telankesi](/user/866969) 您的拓扑排序函数应改为: ```cpp int Tuopu() { queue<int>q; int dis[N]; for (int i = 1; i <= n; i++) { dis[i] = 0; if (indu[i] == 0 &&id[i]==i) { q.push(i); dis[i]=w[i]; } } while (!q.empty()) { int k = q.front(); q.pop(); for (int i = h[k]; i; i = ed[i].next) { int v = ed[i].to; dis[v] = max(dis[v], dis[k]+w[v]); indu[v]--; if (indu[v] == 0)q.push(v); } } int ans = 0; for (int i = 1; i <= n; i++) ans = max(ans, dis[i]); return ans; } ``` 与您的代码主要有 2 处区别: 1. $dis_i$ 应初始化为 $0$ 2. 拓扑排序不需要跑 $n$ 次
by AZN_0975 @ 2023-07-07 09:06:08


@[AZN_0975](/user/476985) 已关注谢谢
by telankesi @ 2023-07-07 09:37:14


|