import java.util.Scanner; public class Main { private static Scanner s = new Scanner(System.in) ; public static void main(String[] args) { int n = s.nextInt() ; int a[][] = new int[n][n] ; boolean visited[] = new boolean[n] ; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length; j++) { a[i][j] = s.nextInt() ; } } for (int i = 0; i < visited.length; i++) { a[i][i] = 1 ; } Graph g = init(a ,visited) ; deptSearch(g, 0) ; System.out.println() ; } public static Graph init(int a[][] , boolean visited[]){ Graph g = new Graph(a.length) ; g.visited = visited ; g.a = a ; return g ; } public static void deptSearch(Graph g,int x){ for (int i = 0; i < g.n; i++) { if(g.a[x][i] ==1&&g.visited[i]==false){ g.visited[i] = true ; visit(i) ; deptSearch(g, i) ; } } } public static void visit(int i){ System.out.print(i+" "); } } class Graph{ int n ; int a[][] = new int [n][n] ; boolean visited[] = new boolean[n] ; public Graph(int n) { this.n = n ; } } /************************************************************** Problem: 2159 User: admin Language: Java Result: Accepted Time:835 ms Memory:46076 kb ****************************************************************/