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.