java求助,后面4个MLE
查看原帖
java求助,后面4个MLE
666313
Charry_楼主2022/3/12 15:42
import java.util.*;

public class p5318 {
    static int N = 100010;
    static StringBuilder ans = new StringBuilder();
    static List<List<Integer>> q = new ArrayList<>();
    static boolean vis[] = new boolean[N];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        init();
        int n = in.nextInt();
        int m = in.nextInt();
        int x, y;
        while (m-- > 0) {
            x = in.nextInt();
            y = in.nextInt();
            add_edge(x, y);
        }
        sort();
        dfs(1);
        System.out.println(ans);

        Arrays.fill(vis, false);
        ans = new StringBuilder();

        bfs(1);
        System.out.println(ans);
    }

    private static void bfs(int u) {
        if (!vis[u]) {
            ans.append(u).append(" ");
            vis[u] = true;
        }
        if (!q.get(u).isEmpty()) {
            for (int x : q.get(u)) {
                if (!vis[x]) {
                    ans.append(x).append(" ");
                    vis[x] = true;
                }
            }
            for (int x : q.get(u)) {
                bfs(x);
            }
        }
    }

    private static void sort() {
        for (List<Integer> x : q) {
            Collections.sort(x);
        }
    }

    private static void dfs(int u) {
        ans.append(u).append(" ");
        vis[u] = true;
        if (!q.get(u).isEmpty()) {
            for (int x : q.get(u)) {
                if (!vis[x]) dfs(x);
            }
        }
    }

    private static void add_edge(int x, int y) {
        q.get(x).add(y);
    }

    private static void init() {
        for (int i = 1; i <= N; i++) {
            q.add(new ArrayList<>());
        }
    }
}
2022/3/12 15:42
加载中...