標題:
2/19 Graph Traversal DFS做法
[打印本頁]
作者:
justtim
時間:
2011-2-19 21:41
標題:
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
複製代碼
作者:
蔡昀修
時間:
2011-2-26 19:58
#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.end() , j ) ;
visit[j] = true ;
}
}
}
}
}
system( "Pause" ) ;
}
作者:
a3218290
時間:
2011-2-26 19:58
#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 ++ )
{
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 )
{
visit[j] = true ;
vi.insert( vi.end() , j ) ;
}
}
}
}
}
system( "Pause" ) ;
}
明明是我先做出來的((茶
作者:
蔡昀修
時間:
2011-2-26 19:58
先貼先贏
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2