Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by registered user Erika ( 15 years ago )
dijkstra (siroooja)

#include <stdio.h>
#include <stdlib.h>
#define INFTY 100000

int m[10][10];

void Dijkstra (int k, int n)
{
 int i,j,min,z=1;
 int * A = (int *)malloc(n*sizeof(int));
 int * B = (int *)malloc(n*sizeof(int));
 int * C = (int *)malloc(n*sizeof(int));
 for (i=0; i<n; i++)
 {
  for (j=0; j<n; j++) printf("%i ", m[i][j]);
  printf("n");
 }
 for (i=0; i<n; i++)
 {
  A[i] = 0;
  C[i] = i;
  B[i] = m[k][i];
 }
 A[k] = 1;
 C[k] = 0;
 for (i=0; i<n; i++)
 {
  min = 0;
  for (j=0; j<n; j++)
   if (A[j] == 0 && B[j] < B[min]);
  A[min] = 1;
  if (B[k] > B[j]+m[j][k]) 
  {
   B[k] = B[j] + m[j][k];
   C[k] = j;
  }
 }

 for (i=0; i<n; i++) printf("%i ", C[i]);
 free(A);
 free(B);
 free(C);
}

int main ()
{
 FILE *input;
 int i,j,k,n,s;
 if ( !(input = fopen&#40;"input.txt", "r"&#41;)
 {
  printf("Fucking shit!!!! YEAH!!! FILE NOT FOUNDn");
  exit(1);
 }
 fscanf(input, "%i %i", &n, &s);
 for (i=0; i<n; i++)
  for (j=0; j<n; j++)
  {
   fscanf(input, "%i", &k);
   if (k == 0 && i!=j) m[i][j] = INFTY;
   else m[i][j] = k;
  }

 Dijkstra (s,n);

 fclose(input);
 return 0;
}

 

Revise this Paste

Your Name: Code Language: