1 #include<iostream>
2 #include<vector>
3 using namespace std;
4
5 const int maxn=12;
6
7 int vis[maxn];
8
9 vector<int> G[maxn];
10
11
12 int dfs_clock;
13 int pre[maxn];
14 int post[maxn];
15 int cc[maxn];
16 int current_cc=0;
17 void dfs(int u)
18 {
19 //pre
20
21 vis[u]=1;
22 pre[u]=++dfs_clock;
23 cc[u]=current_cc;
24 for(int i=0;i<G[u].size();i++)
25 {
26 int v=G[u][i];
27 if(!vis[v]) dfs(v);
28
29 }
30
31 post[u]=++dfs_clock;
32 //post
33 }
34
35 void init()
36 {
37 for(int i=0;i<12;i++)
38 vis[i]=0;
39
40 G[0].push_back(1);
41 G[0].push_back(4);
42
43 G[1].push_back(0);
44
45 G[2].push_back(3);
46 G[2].push_back(6);
47 G[2].push_back(7);
48
49
50 G[3].push_back(2);
51 G[3].push_back(7);
52
53
54 G[4].push_back(0);
55 G[4].push_back(8);
56 G[4].push_back(9);
57
58
59 G[6].push_back(2);
60 G[6].push_back(7);
61 G[6].push_back(10);
62
63 G[7].push_back(2);
64 G[7].push_back(3);
65 G[7].push_back(6);
66 G[7].push_back(10);
67 G[7].push_back(11);
68
69 G[8].push_back(4);
70 G[8].push_back(9);
71
72
73 G[9].push_back(4);
74 G[9].push_back(8);
75
76 G[10].push_back(6);
77 G[10].push_back(7);
78
79 G[11].push_back(7);
80
81 dfs_clock=0;
82 }
83
84
85 int main()
86 {
87 init();
88
89 for(int i=0;i<12;i++)
90 {
91 if(vis[i]==0)
92 {
93 current_cc++;
94 dfs(i);
95 }
96
97 }
98
99
100
101 // dfs(0);
102 for(int i=0;i<12;i++)
103 cout<<i+1<<" "<<pre[i]<<" "<<post[i]<<" "<<cc[i]<<endl;
104
105
106 }