B3862 图的遍历(简单版)

使用dfs找出每一个节点的解。

#include <iostream>
#include <vector>
using namespace std;

vector<int>adj[1001];
bool visited[1001];
int ans;

void dfs(int u) {
  if (visited[u]) {
    return;
  }
  visited[u] = true;
  ans = max(ans, u);
  for (int v : adj[u]) {
    dfs(v);
  }
}

int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
  }
  for (int i = 1; i <= n; i++) {
    ans = 0;
    for (int j = 1; j <= n; j++) {
      visited[j] = false;
    }
    dfs(i);
    cout << ans << ' ';
  }
  cout << endl;
  return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容