kama98. 所有可达路径
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
//初始化有向图
boolean[][] res = new boolean[n+1][n+1];
for(int i=0;i<m;i++) {
int x=scan.nextInt();
int y=scan.nextInt();
res[x][y]=true;
}
scan.close();
//DFS遍历路径
path.add(1);
dfs(res,1,n);
//如果无输出-1
if(dp.size()==0) {
System.out.print("-1");
return ;
}
//输出路径
for(int i=0;i<dp.size();i++) {
List<Integer> temp=dp.get(i);
for(int j=0;j<temp.size();j++) {
System.out.print(temp.get(j));
if(j<temp.size()-1) {
System.out.print(" ");
}
}
if(i<dp.size()-1) {
System.out.println();
}
}
}
public static List<List<Integer>> dp = new ArrayList<>();
public static List<Integer> path = new ArrayList<>();
public static void dfs(boolean[][]res,int index,int n) {
if(index==n) {
dp.add(new ArrayList<>(path));
return;
}
for(int i=1;i<=n;i++) {
if(res[index][i]==true) {
path.add(i);
dfs(res,i,n);
path.remove(path.size()-1);
}
}
}