Untitled
unknown
plain_text
3 years ago
2.2 kB
11
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...