fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define MAX 1020
  4.  
  5. int matrix[MAX][MAX];
  6. int visit[MAX];
  7. int d[MAX],f[MAX],level[MAX];
  8. int Time;
  9. int city;
  10.  
  11. void dfs(int node,int counter) {
  12. Time = Time + 1;
  13. d[node] = Time;
  14. cout <<"node = " << node << endl;
  15. level[node] = counter;
  16. visit[node] = 1;
  17. for(int i = 0; i <= city - 1; i++){
  18. if(matrix[node][i] == 1 && visit[i] == 0) {
  19. dfs(i,counter);
  20. }
  21. }
  22. Time++;
  23. f[node] = Time;
  24. return;
  25. }
  26.  
  27. int main(void)
  28. {
  29. int node,edge;
  30. city = node;
  31. scanf("%d %d",&node,&edge);
  32. memset(matrix,0,sizeof(matrix));
  33. for(int i = 1; i <= edge; i++) {
  34. int a,b;
  35. scanf("%d %d",&a,&b);
  36. matrix[a][b] = 1;
  37. matrix[b][a] = 1;
  38. }
  39. memset(visit,0,sizeof(visit));
  40. memset(level,0,sizeof(level));
  41. Time = 0;
  42. int counter = 1;
  43. for(int i = 0; i <= node - 1; i++){
  44. if(visit[i] == 0) {
  45. dfs(i,counter);
  46. counter++;
  47. }
  48. }
  49. cout <<"ase" << endl;
  50. for(int i = 0; i <= node - 1;i++){
  51. printf("%d: %d %d %d\n",i,level[i],d[i],f[i]);
  52. }
  53. return 0;
  54.  
  55. }
  56.  
Success #stdin #stdout 0s 7544KB
stdin
6
6
1 2
1 3
0 4
2 3
5 4
5 0
stdout
node = 0
node = 1
node = 2
node = 3
node = 4
node = 5
ase
0: 1 1 2
1: 2 3 4
2: 3 5 6
3: 4 7 8
4: 5 9 10
5: 6 11 12