DFS 问题集锦

来源:互联网 发布:运营数据周报模板 编辑:程序博客网 时间:2024/06/05 20:20

1. dfs求连通块

Description

输入一个简单无向图,求出图中连通块的数目。

Input

输入的第一行包含两个整数n和m,n是图的顶点数,m是边数。1<=n<=1000,0<=m<=10000。

以下m行,每行是一个数对v y,表示存在边(v,y)。顶点编号从1开始。
Output

单独一行输出连通块的数目。


代码:

int dfs(int x){visited[x] = 1;for(int i = 1 ; i <= n; i++ ){if(a[x][i] && !visited[i]){dfs(i);}}}
主函数里:

for(int i = 1 ; i <= n ; i++){if(!visited[i]){block ++;dfs(i);}}


比较简单的搜索问题,直接深搜。








===================================================================


2. to be continued.

原创粉丝点击