Untitled
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...