All pastes #519780 Raw Edit

Stuff

public text v1 · immutable
#519780 ·published 2007-05-29 19:22 UTC
rendered paste body
import java.io.IOException;
import java.util.StringTokenizer;

class grafos_c{
    
    public grafos_c(){
        String s="";
        int c=0;
        int x,y,no,val,cpairs,v1,v2;
        int[][] risk;
        while((s=readLn(1000))!= null){
            c++;
            risk = new int[21][21];
            
            for(x=1;x<=20;x++){
                for(y=1;y<=20;y++){
                    if(x!=y) risk[x][y]=100;
                    else risk[x][y]=0;
                }
            }
            
            System.out.println("CENAS");
            for(x=1;x<21;x++){
                for(y=1;y<21;y++){
                    System.out.print(risk+" ");
                }
                System.out.println();
            }
            System.out.println("FIM DE CENAS");
            
            for(x=1;x<19;x++){
                StringTokenizer st = new StringTokenizer(s);
                no=Integer.parseInt(st.nextToken());
                for(y=1;y<=no;y++){
                    val=Integer.parseInt(st.nextToken());
                    risk[x][val]=1;
                    risk[val][x]=1;
                }
                // read next
                s=readLn(1000);
            }
            
           
            
            System.out.println("Test Set #"+c);
            risk=floydWarshall(risk);
            
            cpairs = Integer.parseInt(readLn(10));
            
            for(x=0;x<cpairs;x++){
                s=readLn(1000);
                StringTokenizer st = new StringTokenizer(s);
                v1=Integer.parseInt(st.nextToken());
                v2=Integer.parseInt(st.nextToken());
                System.out.printf("%2d to %2d: %d\n",v1,v2,risk[v1][v2]);
            }
            
            System.out.println();
        }
        
        
        
    }
    
    int[][] floydWarshall(int [][] tab){
        for(int k=1;k<tab.length;k++)
            for(int i=1;i<tab.length;i++)
                for(int j=1;j<tab.length;j++)
                    if(tab[i][k]+tab[k][j]<tab[i][j])
                        tab[i][j]=tab[i][k]+tab[k][j];
        return tab;
    }
    
    public static void main(String args[]){
        new grafos_c();
    }
    
    String readLn(int maxLg){
        byte lin[] = new byte [maxLg];
        int lg = 0, car = -1;
        String line = "";
        try{
            while (lg < maxLg){
                car = System.in.read();
                if ((car < 0) || (car == '\n')) break;
                lin [lg++] += car;
            }
        } catch (IOException e){
            return (null);
        }
        if ((car < 0) && (lg == 0)) return (null);  // eof
        return (new String(lin, 0, lg));
    }
    
}