当前位置 博文首页 > u012938183的博客:图的遍历-深度优先搜索+数组模拟邻接表

    u012938183的博客:图的遍历-深度优先搜索+数组模拟邻接表

    作者:[db:作者] 时间:2021-06-13 12:16

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    
    int n, m;
    int head[100010];
    int to[100010];
    int nxt[100010];
    bool vis[100010];
    int tmp = 0;
    
    void addEdge(int x, int y)
    {
    	to[tmp] = y;
    	nxt[tmp] = head[x];
    	head[x] = tmp;
    	tmp ++;
    }
    
    void dfs(int x)
    {
    	printf("%d ", x);
    	vis[x] = true;
    	for(int i = head[x]; i != -1; i = nxt[i])
    	{
    		if(! vis[to[i]])
    		dfs(to[i]);
    	}
    }
    
    int main()
    {
    	memset(head, -1, sizeof head);
    	scanf("%d%d", &n, &m);
    	for(int i = 1; i <= m; i ++)
    	{
    		int x, y;
    		scanf("%d%d", &x, &y);
    		addEdge(x, y);
    		addEdge(y, x);
    	}
    	dfs(1);
    	return 0;
    }