RtΔ.\operatorname{Rt}\Delta.

改成 vector 就 a 了

#include "bits/stdc++.h"
using namespace std;
int n, s;

struct edge {
    int to, nxt;
}e[1919810];

int hd[1919810];
int vis[1919810];
int cnt;

void add_edge (int u, int v) {
    ++cnt;
    e[cnt].to = v;
    e[cnt].nxt = hd[u];
    hd[u] = cnt;
}

void dfs(int now) {
    for (int i = hd[now]; i; i = e[i].nxt) {
        int to = e[i].to;
        if (!vis[to]) {
            vis[to] = 1;
            printf ("%d ", to);
            dfs(to);
        }
    }
}

int main() {
    scanf ("%d%d", &n, &s);
    for (int i = 1; i <= n; ++i) {
        int u, v;
        scanf ("%d%d", &u, &v);
        add_edge (u, v);
        add_edge (v, u);
    }
    vis[s] = 1;
    printf ("%d ", s);
    dfs(s);
}

1 条评论

  • 1