图的深度遍历

来源:互联网 发布:淘宝网紫斑牡丹苗 编辑:程序博客网 时间:2024/06/14 17:08

图的深度遍历

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

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

Input

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

Output

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

Example Input

14 40 10 20 32 3

Example Output

0 1 2 3

Hint

 

Author

 
#include <cstdio>#include <cstring>using namespace std;bool a[100+5][100+5];bool vis[100+5], first;int n, m;void dfs(int x) {    if(!first)        printf(" ");    first=0;    printf("%d", x);    for(int i=x;i<n;i++) {        if(!vis[i]&&a[x][i]) {            vis[i]=1;            dfs(i);        }    }}int main() {    int t;    scanf("%d", &t);    while(t--) {        scanf("%d %d", &n, &m);        memset(a,0,sizeof(a));        memset(vis,0,sizeof(vis));        for(int i=0;i<m;i++) {            int u, v;            scanf("%d %d", &u, &v);            a[u][v]=a[v][u]=1;        }        first=1;        dfs(0);        printf("\n");    }    return 0;}

0 0