数据结构实验之图论二:图的深度遍历

来源:互联网 发布:linux cpu 超过100 编辑:程序博客网 时间:2024/06/05 02:44



数据结构实验之图论二:图的深度遍历

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

1
4 4
0 1
0 2
0 3
2 3

Example Output

0 1 2 3

Hint



Author

#include<stdio.h>#include<stdlib.h>#include<string.h>int a[110][110], b[110];int k, m;void DFS(int i);int main(){    int n, i, u, v;    scanf("%d", &n);    while(n--)    {        memset(a, 0, sizeof(a));        memset(b, 0, sizeof(b));        scanf("%d %d", &k, &m);        for(i = 1; i <= m; i++)        {            scanf("%d %d", &u, &v);            a[u][v] = a[v][u] = 1;        }        printf("0");        b[0] = 1;        DFS(0);      printf("\n");    }}void DFS(int i){    int j;    for(j = 0; j < k; j++)    {        if(a[i][j] == 1 && b[j] == 0)        {            printf(" %d", j);            b[j] = 1;            DFS(j);        }    }}


原创粉丝点击