Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include "lab.h"
- int graf(char *str)
- {
- int i = 0;
- int k = 0;
- printf("Versini\r\n");
- gets(str);
- printf("%s\r\n", str);
- while(str[i] != 0)
- {
- i++;
- k++;
- }
- return k;
- }
- int deikstra()
- {
- int t, i, j;
- char str[50] = {0};
- t = graf(str);
- int mass[t][t];
- int rass[t];
- int ver[t];
- int temp;
- int ind, min;
- for (i = 0; i < t; i++)
- {
- mass[i][i] = 0;
- for (j = i + 1; j < t; j++)
- {
- printf("vvedite rasst %d - %d: ", i + 1, j + 1);
- scanf("%d", &temp);
- mass[i][j] = temp;
- mass[j][i] = temp;
- }
- }
- for ( i = 0; i < t; i++)
- {
- for (j = 0; j < t; j++)
- printf("%d ", mass[i][j]);
- printf("\n");
- }
- for (int i = 0; i < t; i++)
- {
- rass[i] = 10000;
- ver[i] = 1;
- }
- rass[0] = 0;
- do {
- ind = 10000;
- min = 10000;
- for (int i = 0; i < t; i++)
- {
- if ((ver[i] == 1) && (rass[i]<min))
- {
- min = rass[i];
- ind = i;
- }
- }
- if (ind != 10000)
- {
- for (int i = 0; i < t; i++)
- {
- if (mass[ind][i] > 0)
- {
- temp = min + mass[ind][i];
- if (temp < rass[i])
- {
- rass[i] = temp;
- }
- }
- }
- ver[ind] = 0;
- }
- } while (ind < 10000);
- printf("\nKrat4 rasst ot vershin: \n");
- for (int i = 0; i < t; i++)
- printf("%4d ", rass[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement