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("input.txt", "r"))
{
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