2/19 Graph Traversal DFS做法
本帖最後由 justtim 於 2011-2-19 21:44 編輯
請回復並且修改出BFS的做法
以下是DFS做法- #include<iostream>
- #include<fstream>
- #include<vector>
- using namespace std ;
- const int M = 9999 ;
- int main()
- {
- ifstream fin( "a.in" ) ;
- ofstream fout( "a.out" ) ;
-
- int x , y ;
- fin >> x >> y ;
- int map[x][x] ;
- int visit[x] ;
- vector<int> vi ;
-
- for( int i = 0 ; i < x ; i ++ )
- {
- for( int j = 0 ; j < x ; j ++ )
- {
- map[i][j] = M ;
- }
- visit[i] = false ;
- }
-
- for( int i = 0 ; i < y ; i ++ )
- {
- int u,v ;
- fin >> u >> v ;
- map[u][v] = 1 ;
- map[v][u] = 1 ;
- }
-
- /* for( int i = 0 ; i < x ; i ++ )
- {
- for( int j = 0 ; j < x ; j ++ )
- {
- cout << map[i][j] << "\t" ;
- }
- cout << endl ;
- } */
- for( int i = 0 ; i < x ; i ++ )
- {
- if( !visit[i] )
- {
- vi.push_back( i ) ;
- visit[i] = true ;
- while( !vi.empty() )
- {
- int t = vi.front() ;
- cout << vi.front() << "\t" ;
- vi.erase( vi.begin() ) ;
- for( int j = 0 ; j < x ; j ++ )
- {
- if( !visit[j] && map[t][j] != M )
- {
- vi.insert( vi.begin() , j ) ;
- visit[j] = true ;
- }
- }
- }
- }
- }
- system( "Pause" ) ;
- }
複製代碼 輸入檔a.in- 7 6
- 0 1
- 0 2
- 1 3
- 1 4
- 2 5
- 2 6
複製代碼 |