File tree Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Expand file tree Collapse file tree 1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < algorithm>
3
+ #include < memory.h>
4
+ #include < vector>
5
+ #include < queue>
6
+ using namespace std ;
7
+
8
+ int map[1001 ][1001 ];
9
+ bool visit[1001 ];
10
+ int N,M,V;
11
+ vector<int > BFS_ans;
12
+ vector<int > DFS_ans;
13
+ queue<int > q;
14
+ void DFS (int v)
15
+ {
16
+ if (visit[v])
17
+ return ;
18
+ DFS_ans.push_back (v);
19
+ visit[v]=true ;
20
+ for (int i=1 ;i<=N;i++)
21
+ {
22
+ if (map[v][i]!=-1 )
23
+ DFS (i);
24
+ }
25
+ }
26
+ void BFS (int v)
27
+ {
28
+ if (visit[v])
29
+ return ;
30
+ BFS_ans.push_back (v);
31
+ visit[v]=true ;
32
+ for (int i=1 ;i<=N;i++)
33
+ {
34
+ if (map[v][i]!=-1 &&!visit[i])
35
+ {
36
+ q.push (i);
37
+ }
38
+ }
39
+ while (!q.empty ())
40
+ {
41
+ int tq = q.front ();
42
+ q.pop ();
43
+ BFS (tq);
44
+ }
45
+ }
46
+
47
+ int main (void )
48
+ {
49
+ memset (map,-1 ,sizeof (map));
50
+ cin>>N>>M>>V;
51
+ for (int i=0 ;i<M;i++)
52
+ {
53
+ int n,m;
54
+ cin>>n>>m;
55
+ map[n][m]=1 ;
56
+ map[m][n]=1 ;
57
+ }
58
+ memset (visit,false ,sizeof (visit));
59
+ DFS (V);
60
+ memset (visit,false ,sizeof (visit));
61
+ q.push (V);
62
+ BFS (V);
63
+ for (int i=0 ;i<DFS_ans.size ();i++)
64
+ cout<<DFS_ans[i]<<" " ;
65
+ cout<<endl;
66
+ for (int i=0 ;i<BFS_ans.size ();i++)
67
+ cout<<BFS_ans[i]<<" " ;
68
+ }
You can’t perform that action at this time.
0 commit comments