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

来源:互联网 发布:飞扬动力软件 编辑:程序博客网 时间:2024/06/05 04:49

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

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


阅读全文
0 0
原创粉丝点击