Untitled

 avatar
unknown
plain_text
2 years ago
2.2 kB
7
Indexable
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

/**
 *
 * @author ADMIN
 */
public class S301 {

    public static ArrayList<Integer> sdke[] = new ArrayList[1001];
    static boolean chuaxet[] = new boolean[1001];
    public static int truoc[] = new int[1001];
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int T = Integer.parseInt(in.nextLine());
        while (T-- > 0) {
            int V = in.nextInt();// so dinh
            int E = in.nextInt();// do canh
            int u = in.nextInt();// diem xuat phat
            int v = in.nextInt();//diem ket thuc
            Arrays.fill(truoc, 0);
            for (int i = 0; i <= V; i++) {
                sdke[i] = new ArrayList<>();
                chuaxet[i] = true;
            }

            for (int i = 1; i <= E; i++) {
                int a = in.nextInt();
                int b = in.nextInt();
                sdke[a].add(b);
            }

            dfs(u, v);
            trace(u,v);
            System.out.println("");
        }
    }

    private static void dfs(int u, int v) {
     
        Queue<Integer> q = new LinkedList<>();
        q.add(u);
        chuaxet[u] = false;
        while (!q.isEmpty()) {
            int x = q.poll();
            if(x==v){
                return;
            }
            for(Integer z : sdke[x]){
                if(chuaxet[z]){
                    chuaxet[z] = false;
                    truoc[x] = z;
                    q.add(z);
                }
            }
        }

    }

    private static void trace(int u, int v) {
        if(chuaxet[v]==true){
            System.out.print(-1);
            return;
        }
        ArrayList<Integer> list = new ArrayList<>();
        while(u!=v){
            if(u==0){
                System.out.print(-1);
                return;
            }
            list.add(u);
            u= truoc[u];        
        }
        for(int i =0;i<list.size();i++){
            System.out.print(list.get(i) + "->");
        }
        System.out.print(v);
    }
}
Editor is loading...