深度优先搜索

#include <bits/stdc++.h>
#define N 10001
using namespace std;
struct Edge {
    int x, y, z, next;
    Edge(int x = 0, int y = 0, int z = 0, int next = 0) :
        x(x), y(y), z(z), next(next) {}
} edge[N * 2];

bool vis[N];
int head[N], sumedge;
int n, m;

void dfs(int x, int p) {
    printf("%d ", x);
    vis[x] = true;
    for (int u = head[x]; u; u = edge[u].next) {
        if (!vis[edge[u].y] && edge[u].z && edge[u].y != p) {
            dfs(edge[u].y ,x);
        }
    }
}

void ins(int x, int y) {
    edge[++sumedge] = Edge(x, y, 1, head[x]);
    head[x] = sumedge;
    return;
}

int main() {
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= m; i++) {
        int x, y;
        scanf("%d%d", &x, &y);
        ins(x, y);
    }
    dfs(1, -1);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容