1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #include<bits/stdc++.h> #include<iostream> #include<vector> #include<algorithm> #include<list> #include<cstdlib> #include<queue> using namespace std ;
int n, m , a, b, tmp ; // a -> start ; b -> end bool vis[100005] = {0}; vector<int> G[100005] ; void DFS(int u) { if(vis[u]==1) return ; cout<<u<<" " ; vis[u] = 1 ; for(int i=0; i<G[u].size(); i++) { int t = G[u][i] ; if(vis[t]==0) { DFS(t) ; } } }
void BFS(int u) { memset(vis,0,sizeof(vis)) ; queue<int> q ; q.push(u) ; vis[u] = 1; while(!q.empty()) { int v = q.front() ; q.pop() ; cout<< v << " " ; for(int i=0; i<G[v].size(); i++) { if(vis[G[v][i]]==0) { vis[G[v][i]] = 1 ; q.push(G[v][i]) ; } } } }
int main() { cin >> n >> m ; for(int i=1; i<=m; i++) { cin >> tmp >> a ; G[tmp].push_back(a) ; } for(int i=1; i<=n; i++) sort(G[i].begin(),G[i].end()) ; DFS(1) ; cout<<endl ;
BFS(1) ; cout<<endl ; return 0 ; }
|