rendered paste bodyimport 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));
}
}