fork download
  1. // DFS
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. using namespace std;
  6.  
  7. int n;
  8. vector<vector<int>> adj;
  9. vector<int> d, f;
  10. int t;
  11.  
  12. void dfs(int u) {
  13. d[u] = ++t;
  14. for (int v : adj[u]) {
  15. if (d[v] == 0) {
  16. dfs(v);
  17. }
  18. }
  19. f[u] = ++t;
  20. }
  21.  
  22. int main() {
  23. cin >> n;
  24. adj.resize(n + 1);
  25. d.resize(n + 1, 0);
  26. f.resize(n + 1, 0);
  27. t = 0;
  28.  
  29. for (int i = 0; i < n; i++) {
  30. int u, k;
  31. cin >> u >> k;
  32. for (int j = 0; j < k; j++) {
  33. int v;
  34. cin >> v;
  35. adj[u].push_back(v);
  36. }
  37. }
  38.  
  39. for (int i = 1; i <= n; i++) {
  40. if (d[i] == 0) {
  41. dfs(i);
  42. }
  43. }
  44.  
  45. for (int i = 1; i <= n; i++) {
  46. cout << i << " " << d[i] << " " << f[i] << endl;
  47. }
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
Standard output is empty