深度优先遍历(模板)

树和图的框架

#include<iostream>
#include<algorithm>

using namespace std;

const int N = 10010;
int h[N], e[N], ne[N], idx;

//a所对应的单链表中插入b  a作为根 
void add(int a, int b) {
	e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

int main() {
	memset(h, -1, sizeof(h));
}

数和图的深度优先遍历

#include<iostream>
#include<algorithm>

using namespace std;

int n, m;
const int N = 10010;
int h[N], e[N], ne[N], idx;
bool st[N];//存遍历过的点

void add(int a, int b) {
	e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

void dfs(int u) {
	st[u] = true;
	for (int i = h[u]; i != -1; i = ne[i])
	{
		int j = e[i];//j是u的邻接点
		if (!st[j])dfs(j);
	}
}

int main() {
	memset(h, -1, sizeof(h));

	dfs(1);
}
posted @ 2024-07-29 14:27  某朝  阅读(26)  评论(0)    收藏  举报