Java Tarjan最后四个RE,求调
查看原帖
Java Tarjan最后四个RE,求调
703474
bin_bin楼主2023/9/30 18:51
import java.io.*;
import java.util.*;

public class Main {
    public static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    public static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    public static int[] fa;
    public static List<Integer>[] g;
    public static List<int[]>[] queries;
    public static int[] ans;
    public static boolean[] vis;
    public static void main(String[] args) {
        //n->结点数    m->查询数      s->根结点
        int n=Int(),m=Int(),s=Int();
        g=new List[n+1];
        Arrays.setAll(g,e->new ArrayList<>());
        for(int i=1;i<n;i++){
            int u=Int(),v=Int();
            g[u].add(v);
            g[v].add(u);
        }

        queries=new List[n+1];
        Arrays.setAll(queries,e->new ArrayList<>());
        for(int i=0;i<m;i++){
            int u=Int(),v=Int();
            queries[u].add(new int[]{v,i});
            if(v!=u){
                queries[v].add(new int[]{u, i});
            }
        }

        fa=new int[n+1];
        for(int i=0;i<=n;i++){
            fa[i]=i;
        }

        ans=new int[m];
        vis=new boolean[n+1];
        tarjan(s);
        for(int a : ans){
            pw.println(a);
        }
        pw.flush();
    }
    public static void tarjan(int u){
        vis[u]=true;
        for(int v : g[u]){
            if(!vis[v]){
                tarjan(v);
                fa[v]=u;
            }
        }
        for(int[] q : queries[u]){
            int v=q[0],idx=q[1];
            if(vis[v]){
                ans[idx]=find(v);
            }
        }
    }
    public static int find(int x){
        if(fa[x]==x){
            return x;
        }
        return fa[x]=find(fa[x]);
    }

    public static int Int() {
        try {
            st.nextToken();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return (int) st.nval;

    }
}
2023/9/30 18:51
加载中...