Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- int visitada(int, int[], int);
- int main(){
- int N;
- scanf("%d", &N);
- int matriz[N][N];
- int distancias[N];
- int ciudades[N];
- ciudades[0] = 0;
- //Leo la matriz e inicio en cero el vector distancias
- for(int i=0; i<N; i++){
- distancias[i] = 0;
- for(int j=0; j<N; j++)
- scanf("%d", &matriz[i][j]);
- }
- //Cargo la suma de las columnas en el vector distancias
- for(int j=0; j<N; j++)
- for(int i=0; i<N; i++)
- distancias[j] += matriz[i][j];
- //Determino la ciudad visitada
- for(int i=0; i<N; i++){
- int ind = visitada(ciudades[i], distancias, N);
- ciudades[i+1] = ind;
- }
- //Imprimo las ciudades visitadas
- for(int i=1; i<N; i++){
- printf("%d", ciudades[i]+1);
- if( i+1!=N ) printf(" ");
- }
- return 0;
- }
- int visitada(int ultima, int distancias[], int N){
- int cd;
- int menor = 100000;
- for(int i=0; i<N; i++){
- if( distancias[i]==0 ){
- distancias[i] = -1;
- return ultima;
- }
- if( ultima!=i && distancias[i]!=-1 ){
- int resta = abs(distancias[i]-distancias[ultima]);
- if( resta<menor ){
- menor = resta;
- cd = i;
- }
- }
- }
- distancias[ultima] = -1;
- return cd;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement