1419 图的DFS遍历

来源:互联网 发布:php 获取上传图片类型 编辑:程序博客网 时间:2024/05/18 00:45
 
描述

请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。

输入

输入第一行为整数n(0< n <100),表示数据的组数。
对于每组数据,第一行是两个整数k,m(0< k <100,0<m<k*k),表示有m条边,k个顶点。
下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。

输出

输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。

样例输入
1
5 4
0 1
0 2
3 0
4 0
样例输出
0 1 2 3 4

 

 

经典问题,DFS

#include<iostream>#include<vector>using namespace std;vector<int> vet[100];int a[100];void dfs(int i){if(a[i]!=0)return;else{cout<<i<<" ";a[i]=1;for(int j=0;j<vet[i].size();j++)if(a[vet[i][j]]==0)dfs(vet[i][j]);}}int main(){int t,k,m,i,j;cin>>t;while(t--){cin>>k>>m;for(int l=0;l<k;l++)vet[l].clear();for(int l=0;l<m;l++){cin>>i>>j;vet[i].push_back(j);vet[j].push_back(i);}for(int l=0;l<k;l++)a[l]=0;for(int l=0;l<k;l++)if(a[l]==0)dfs(l);cout<<endl;}return 0;}


 

原创粉丝点击