00001 #include<scil/scil.h>
00002 #include<LEDA/stream.h>
00003 #include<fstream.h>
00004
00005 #define BIGM 100000000
00006 #define ADD 1000000
00007
00008 int main(int argc, char** argv) {
00009 ifstream is(argv[1]);
00010
00011 int n;
00012 is>>n;
00013
00014 int M[2*n][2*n];
00015
00016 for(int i=0; i<n; i++) for(int j=0; j<n; j++) {
00017 M[2*i][2*j]=BIGM;
00018 M[2*i+1][2*j+1]=BIGM;
00019 };
00020
00021
00022 int k,l;
00023 for(int i=0; i<n; i++) {
00024 for(int j=0; j<n; j++) {
00025 is>>k; l=k+ADD; if(l>BIGM) l=BIGM;
00026 M[2*i][2*j+1]=l;
00027 M[2*j+1][2*i]=l;
00028 }
00029 };
00030
00031 for(int i=0; i<n; i++) {
00032 M[2*i][2*i+1]=0;
00033 M[2*i+1][2*i]=0;
00034 }
00035
00036 for(int i=0; i<2*n; i++) {
00037 M[i][i]=0;
00038 };
00039
00040 cout<<"NAME: bla\n";
00041 cout<<"TYPE: TSP\n";
00042 cout<<"COMMENT: none\n";
00043 cout<<"DIMENSION: "<<2*n<<endl;
00044 cout<<"EDGE_WEIGHT_TYPE: EXPLICIT\n";
00045 cout<<"EDGE_WEIGHT_FORMAT: FULL_MATRIX\n";
00046 cout<<"DISPLAY_DATA_TYPE: NO_DISPLAY\n";
00047
00048 cout<<"EDGE_DATA_FORMAT: EDGE_LIST\n";
00049
00050 cout<<"EDGE_DATA_SECTION\n";
00051 for(int i=0; i<2*n; i++) {
00052 for(int j=0; j<2*n; j++) {
00053 if(M[(i-2+2*n) % (2*n)][(j-2+2*n) % (2*n)]<BIGM) cout<<(i-2+2*n) % (2*n)<<" "<<(j-2+2*n) % (2*n)<<endl;
00054 }
00055 }
00056 cout<<"-1\n";
00057
00058
00059
00060
00061
00062
00063
00064 cout<<"EDGE_WEIGHT_SECTION\n";
00065 for(int i=0; i<2*n; i++) {
00066 for(int j=0; j<2*n; j++) {
00067 cout<<M[(i-2+2*n) % (2*n)][(j-2+2*n) % (2*n)]<<" ";
00068 }
00069 cout<<endl;
00070 }
00071
00072 cout<<"EOF"<<endl;
00073
00074 return 0;
00075 }
00076