import java.io.;
import javax.swing.;
class OrdemTop {
public void ler() throws IOException {
int aux=0, tempo=0, controle=0;;
InputStream is = getClass().getResourceAsStream (“teste\teste.txt”);
BufferedReader br = new BufferedReader (new InputStreamReader (is));
String linha="";;
linha = br.readLine();
aux=Integer.parseInt(linha);
char matriz[][] = new char[aux][aux];
int fecha[] = new int[aux];
int anterior[] = new int[aux];
boolean visitado[] = new boolean[aux];
for(int i=0; i<aux; i++){//descobre a matriz
linha += br.readLine();
}
for(int i=0; i<aux; i++){//inicializa a matriz
for(int j=0; j<aux; j++){
matriz[i][j] = linha.charAt(i+j);
}
}
for(int i=0; i<aux; i++){//inicializa anterior com zero e visitado(marca todos os vertices) como naum visitado
anterior[i]=0;
visitado[i]=false;
}
visita(matriz, visitado, fecha, controle, aux, tempo, anterior);
ordenaTop(fecha, aux);
br.close(); // br.close já fecha “is” automaticamente
}
public void ordenaTop(int fecha[], int aux){
String ordena=Float.toString(fecha[0]);
int menor=fecha[0];
for(int i=1; i<aux; i++){
if(fecha[i]<menor){
menor = fecha[i];
ordena = Float.toString(fecha[i]) + ordena;
}else{
ordena += Float.toString(fecha[i]);
}
}
System.out.println(ordena);
}
public void visita(char matriz[][], boolean visitado[], int fecha[], int controle, int aux, int tempo, int anterior[]){
tempo++;//adiciona mais um ao tempo…
for(int j=0; j<aux; j++){
visitado[controle] = true;//marca o vetor como visitado…
if( (matriz[controle][j]==‘1’) && (visitado[controle]==false) ){
anterior[j]=controle;//pra gravar qual é o vertice do anterior do proximo
controle = j;//acha o proximo vertice
visita( matriz, visitado, fecha, controle, aux, tempo, anterior );
}
if( j==(aux-1) ) {
fecha[controle]=tempo;//acha o tempo em que se volta a partir do vertice
visita( matriz, visitado, fecha, anterior[controle], aux, tempo, anterior );
}
}
for(int i=0; i<aux; i++){//verifica se tem algum vertice não visitado…
if(visitado[i]==false){
visita( matriz, visitado, fecha, i, aux, tempo, anterior );
}
}
}
public static void main(String[] args) throws IOException {
OrdemTop tf = new OrdemTop();
tf.ler();
System.exit(0);
}
}