DFS and BFS
2012-11-30 02:35
274 查看
#include<iostream> #include<fstream> #include<queue> using namespace std; class Graph { private: int **eage; int n; int e; int *visted; queue<int> intq; public: Graph(int n,int e); ~Graph(); void readGraphFile(); void displayDraph(); void dfsSearch(int v); void dfs(); void bfsSearch(int v); void bfs(); }; Graph::Graph(int ni,int ei) { n=ni; e=ei; eage=new int * ; for(int i=0;i<n;i++) eage[i]=new int ; visted=new int ; } Graph::~Graph() { for(int i=0;i<n;i++) delete eage[i]; delete[] eage; delete visted; } void Graph::readGraphFile() { ifstream ifs; char buf; int p=0; int q=0; ifs.open("graph.txt"); while(!ifs.eof()) { ifs.get(buf); if(buf=='1'||buf=='0') { eage[p][q%n]=buf-'0'; q++; if(q%n==0) p++; } } } void Graph::displayDraph() { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) cout<<eage[i][j]<<" "; cout<<endl; } } void Graph::dfsSearch(int v) { visted[v]=1; for(int i=0;i<n;i++) if(eage[v][i]==1) { cout<<v<<"--->"<<i<<endl; if(visted[i]!=1) dfsSearch(i); } } void Graph::dfs() { for(int i=0;i<n;i++) if(visted[i]!=1) dfsSearch(i); } void Graph::bfsSearch(int v) { intq.push(v); visted[v]=1; while(!intq.empty()) { int w=intq.front(); intq.pop(); for(int i=0;i<n;i++) if(eage[w][i]==1) { cout<<w<<"--->"<<i<<endl; if(visted[i]!=1) { visted[i]=1; intq.push(i); } } } } void Graph::bfs() { for(int i=0;i<n;i++) if(visted[i]!=1) bfsSearch(i); } int main() { Graph *g=new Graph(4,16); g->readGraphFile(); g->displayDraph(); char choose; while(cin>>choose) { switch(choose) { case 'd': g->dfs(); break; case 'b': g->bfs();break; default:; } } return 0; }
相关文章推荐
- 【HDU 1312 Red and Black】+ DFS + BFS
- HDU - 1312 : Red and Black(dfs、bfs)
- CF793B:B Igor and his way to work(DFS & BFS)
- HDU 1312 Red and Black DFS(深度优先搜索) 和 BFS(广度优先搜索)
- 449. Serialize and Deserialize BST——几乎所有树的面试题目都会回到BFS或者DFS,使用BFS,None节点存#
- 基础数据结构算法_DFS and BFS
- DFS and BFS (一)
- POJ 3083 Children of theCandy Corn(DFS and BFS)
- HDU 1312 Red and Black(基础bfs或者dfs)
- HDU 1312 Red and Black(BFS,DFS)
- HDOJ 1312 Red and Black(DFS,BFS)
- 杭电ACM OJ 1026 Ignatius and the Princess I DFS+BFS
- !HDU 4101 Ali and Baba-博弈-(bfs&dfs扫描二维点)
- HDU 1312Red and Black(简单搜索 bfs或dfs)
- HDU1312 Red and Black (DFS || BFS)
- hdu 1312 Red and Black DFS搜索 or BFS搜索
- Codeforces Good Bye 2016 D. New Year and Fireworks(bfs/dfs)
- Red and Black(BFS or DFS)
- [LeetCode][DS-AL]--297. Serialize and Deserialize Binary Tree(BFS & DFS)
- HDU 1312 Red and Black 红与黑 搜索 dfs bfs