bool dfs(int u) { vis[u] = 1; for (int v : adj[u]) { if (vis[v] == 1) { return false; } else if (vis[v] == 0) { if (!dfs(v)) { return false; } } } vis[u] = 2; return true; }将这段代码改成在c++98标准下可以运行通过
时间: 2024-02-04 15:03:32 浏览: 24
这段代码本身并不需要修改,因为它并不涉及到 C++11 及以上版本的特性。但如果你需要在 C++98 等老旧标准下编译通过,可能需要修改一些语法和库的使用。
首先,C++98 不支持 range-based for 循环,你需要改成普通的 for 循环:
```
for (vector<int>::iterator it = adj[u].begin(); it != adj[u].end(); ++it) {
int v = *it;
// ...
}
```
另外,C++98 的 vector 没有提供 emplace_back() 函数,可以改成 push_back() 代替。
最后,C++98 的 bool 类型不能直接转换为 int 类型,需要使用 0 和 1 代替 true 和 false。
```
bool dfs(int u) {
vis[u] = 1;
for (vector<int>::iterator it = adj[u].begin(); it != adj[u].end(); ++it) {
int v = *it;
if (vis[v] == 1) {
return 0;
} else if (vis[v] == 0) {
if (!dfs(v)) {
return 0;
}
}
}
vis[u] = 2;
return 1;
}
```
阅读全文