アットウィキロゴ

x4

package line8;
 
 
import tool.*;
import java.io.*;
 
public class pro {
 
    int s,datanumber,sx;
    String[] data=new String[50000];
    String[] line=new String[50000];
    String[] sta=new String[50000];
    String[] com=new String[50000];
  String[] geo=new String[50000];
 
  double[] lat=new double[50000];
  double[] lon=new double[50000];
  int dicnumber;
  String[] dic_com=new String[50000];
  String[] dic_line=new String[50000];
   String[] dic_geo=new String[50000];
  int[] code=new int[50000];
  int number;
 
  int[][] link=new int[600][600];
   int[] rank=new int[60000];
    int[] route=new int[20000];
   int[][] dis=new int[600][600];
 
  int[][] delta=new int[10500][600];
   int[][] sigma=new int[10500][600];
   int[] number_sigma=new int[10500];
   int[][] dis_sta=new int[10500][10500];
     double[] don=new double[10500];
 
    public static void main(String[] args) {
        pro test=new pro();
    }
 
    pro(){
 
     readfile sub=new readfile();
    sub.makedata("ren.txt","UTF-8");
    data=sub.data;
    datanumber=sub.datanumber;
 
 
    String str;
 
   for(s=1;s<datanumber+1;s++){
    catchword sub8=new catchword();
    sta[s]=sub8.makedata(data[s],"station");
    line[s]=sub8.makedata(data[s],"line");
    com[s]=sub8.makedata(data[s],"com"); 
   str= sub8.makedata(data[s],"lat"); 
   lat[s]=num(str);
   str= sub8.makedata(data[s],"lon"); 
   lon[s]=num(str);
   geo[s]=geo(lat[s],lon[s]); 
   }
 
 
    dicnumber=0;
    int h,cc;
 
     for(s=1;s<datanumber+1;s++){
     cc=0;
     for(sx=1;sx<dicnumber+1;sx++){
     h=0;
     if(com[s].equals(dic_com[sx]))h=h+1;
     if(line[s].equals(dic_line[sx]))h=h+1;
     if(h==2)cc=100;
     }
     if(cc<50)dicnumber=dicnumber+1;
     if(cc<50)dic_line[dicnumber]=line[s];
     if(cc<50)dic_com[dicnumber]=com[s];
     }
 
 
     for(s=1;s<datanumber+1;s++){
     cc=0;
     for(sx=1;sx<dicnumber+1;sx++){
     h=0;
     if(com[s].equals(dic_com[sx]))h=h+1;
     if(line[s].equals(dic_line[sx]))h=h+1;
     if(h==2)code[s]=sx;
     }
     }
 
     System.out.println(dicnumber); 
     System.out.println(datanumber); 
     int tr;
 
 
   for(tr=1;tr<datanumber+1;tr++){
   int s1=code[tr];     
   for(s=1;s<datanumber+1;s++){
   int s2=code[s];
  if(geo[s].equals(geo[tr]))link[s1][s2]=100;
  }
  }     
 
 
   for(tr=1;tr<dicnumber+1;tr++){
  for(s=1;s<dicnumber+1;s++){ 
  dis[tr][s]=10; 
   }}      
 
 
 
   for(tr=1;tr<dicnumber+1;tr++){
   for(s=1;s<dicnumber+1;s++){
  if(link[tr][s]>50)dis[tr][s]=1;
  }
  }     
 
 
  for(tr=1;tr<dicnumber+1;tr++){
  dis[tr][tr]=0; 
   }  
 
 
  int mind,d1,k; 
 
  for(k=1;k<11;k++){
 
         for(tr=1;tr<dicnumber+1;tr++){
         for(s=1;s<dicnumber+1;s++){
          mind=dis[tr][s];
        for(sx=1;sx<dicnumber+1;sx++){  
        d1=dis[tr][sx]+dis[s][sx];
        if(d1<mind)mind=d1;
        }
        dis[tr][s]=mind;
        dis[s][tr]=mind;
         }
         }     
   System.out.println(k);     
  }
 
 
   for(s=1;s<dicnumber+1;s++){
  int p1=0;
  for(sx=1;sx<dicnumber+1;sx++){
   p1=p1+dis[s][sx];
  }    
  }
 
 
   for(tr=1;tr<datanumber+1;tr++){
   int s1=code[tr];     
  for(s=1;s<datanumber+1;s++){
  s1=code[s];
 if(geo[tr].equals(geo[s]))delta[tr][s1]=100;
  }
  }
 
     for(tr=1;tr<datanumber+1;tr++){
       sx=0;
         for(s=1;s<dicnumber+1;s++){
if(delta[tr][s]>50)sx=sx+1;
if(delta[tr][s]>50)sigma[tr][sx]=s;
       }
     number_sigma[tr]=sx;
     }
 
     int s1,s2;
 
    for(tr=1;tr<datanumber+1;tr++){
         for(s=1;s<datanumber+1;s++){
   mind=10;
         for(s1=1;s1<number_sigma[tr]+1;s1++){
         for(s2=1;s2<number_sigma[s]+1;s2++){
          int p1=sigma[tr][s1];
          int p2=sigma[s][s2];
         if(dis[p1][p2]<mind)mind=dis[p1][p2];  
 
         }}
        dis_sta[tr][s]=mind;     
         }}
 
     for(tr=1;tr<datanumber+1;tr++){
     int p1=0;
         for(s=1;s<datanumber+1;s++){   
         p1=p1+dis_sta[tr][s];
         }
    don[tr]=(double)p1/datanumber;
     }
 
    ranking();
 
    for(tr=1;tr<201;tr++){
    sx=rank[tr];
    System.out.println(com[sx]+","+line[sx]+","+sta[sx]);
    }
 
 
 
 
    }
 
    void ranking(){ 
int r,s,sx,h; 
int[] ch=new int[20001];
double maxu;
int t;
 
for(r=1;r<datanumber+1;r++){ 
t=0;
sx=0; 
maxu=999; 
for(s=1;s<datanumber+1;s++){ 
h=0; 
if(don[s]<maxu)h=h+1; 
if(ch[s]<50)h=h+1; 
if(h==2)maxu=don[s]; 
if(h==2)sx=s; 
}
rank[r]=sx; 
ch[sx]=100; 
}
 
 
}
 
 
 
 
 
 
    String geo(double xs,double ys){
    double x,y;
    int x1,x2,x3;
    int y1,y2,y3;
    x=xs-100;
    y=1.5*ys;
    y1=(int)y;
    x1=(int)x;
    y=y-y1;
    y=8*y;
    x=x-x1;
    x=8*x;
    y2=(int)y;
    x2=(int)x;
    y=y-y2;
    y=10*y;
    x=x-x2;
    x=10*x;
    y3=(int)y;
    x3=(int)x;
String str;
str=""+y1+""+x1+""+y2+""+x2+""+y3+""+x3;
return str;    
}
 
 
       double num(String str){
 
    double nx;
 
    nx=0;
 
 try{
 
    nx=Double.parseDouble(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}
 
 
 
 
 
}
 
最終更新:2015年10月11日 21:41