import java.util.ArrayList;
import java.util.Collections;
public class TravelRoute {
private static ArrayList<String> list = new ArrayList<>();
private static String route = "";
private static boolean[] visit;
public String[] solution(String[][] tickets) {
for (int i = 0; i < tickets.length; i++) {
visit = new boolean[tickets.length];
if (tickets[i][0].equals("ICN")) {
route = tickets[i][0] + " ";
visit[i] = true;
dfs(tickets, tickets[i][1], 1);
}
}
Collections.sort(list);
return list.get(0).split(" ");
}
private void dfs(String[][] tickets, String arrival, int cnt) {
route += arrival + " ";
if (cnt == tickets.length) {
list.add(route);
return;
}
for (int i = 0; i < tickets.length; i++) {
if (tickets[i][0].equals(arrival) && !visit[i]) {
visit[i] = true;
dfs(tickets, tickets[i][1], cnt + 1);
visit[i] = false;
route = route.substring(0, route.length() - 4);
}
}
}
}