TitleType text here...

#include<fstream>
#include
<iostream>

using namespace std;

ifstream fin(
"contest.in");
ofstream fout(
"contest.out");

const int Max=101;

int slen;
int n;
int y[Max][Max];
int x[Max];
int xbak[Max];

void input(){
     fin
>>n;
     
for(int i=1;i<=n;i++)
         
for(int j=1;j<=n;j++)
         fin
>>y[i][j];
         }


void out(int k){
     
int s=0;
     
for(int i=1;i<k;i++)
        s
+=y[x[i]][x[i+1]];
     
if(s<slen){
                memset(xbak,
0,sizeof(xbak));
                
for(int i=1;i<=k;i++)
                   xbak[i]
=x[i];
                slen
=s;
                }

}


int check(int v,int k){
    
if(y[k][v-1]==0return 0;
    
if(k==n){
             x[v]
=k;out(v);return 0;
             }

    
for(int i=2;i<v;i++){
            
if(x[i]==k) return 0;
            }

    
return 1;
}


void search(int k){
     
if(k>n) return ;
     
for(int i=2;i<=n;i++)
             
if(check(k,i)){
                            x[k]
=i;
                            search(k
+1);
                            }

}
 

void output(){
     fout
<<slen<<endl;
     
for(int i=1;i<=n;i++if(xbak[i]>0) fout<<xbak[i]<<" ";
     fout
<<endl;
}


int main(){
    input();
    slen
=10000001;
    x[
1]=1;
    search(
2);
    output();
    
return 0;
}

              
posted on 2008-03-12 19:41  vector  阅读(236)  评论(0编辑  收藏  举报