有点不明白……看 OIwiki 写的:
void dfs1(int x) {
vis[x] = true;
for (int i = 0; i < p1[x].size(); i++)
if (!vis[p1[x][i]]) dfs1(p1[x][i]);
s.push_back(x);
}
void dfs2(int x) {
f[x] = tot;
for (int i = 0; i < p2[x].size(); i++)
if (!f[p2[x][i]]) dfs2(p2[x][i]);
}
void kosaraju() {
tot = 0;
for (int i = 1; i <= n; i++)
if (!vis[i]) dfs1(i);
for (int i = n; i >= 1; i--)
if (!f[s[i]]) {
tot++;
dfs2(s[i]);
}
}
请问这样跑完之后,如果要解决 刻录光盘 这道题,应该怎么写呢,谢谢大佬!