Скачиваний:
23
Добавлен:
02.05.2014
Размер:
259.58 Кб
Скачать

Блок-схемы

В данной работе представлена программа для реализации алгоритма Прима.

Листинг программы

#include <stdio.h>

#include <algorithm.h>

#include <conio.h>

const int MaxN = 101;

int n, m, s;

struct Tedge { int a, b, c; } R[MaxN * MaxN];

bool U[MaxN * MaxN];

int P[MaxN];

bool operator <(const Tedge& a, const Tedge& b) {

return a.c < b.c;

}

int get(int x)

{

if (P[x] != x) P[x] = get(P[x]);

return P[x];

}

void Join(int x, int y)

{

x = get(x);

y = get(y);

if (x == y) P[x] = y; else P[y] = x;

}

int main()

{

freopen("input.txt", "r", stdin);

scanf("%d%d", &n, &m);

for (int i = 1; i <= m; i++)

scanf("%d%d%d", &R[i].a, &R[i].b, &R[i].c);

sort(R, R + m);

memset(U, 0, sizeof(U));

s = 0;

for (int i = 1; i <= n; i++) P[i] = i;

for (int i = 1; i <= m; i++)

if (get(R[i].a) != get(R[i].b)) {

Join(R[i].a, R[i].b);

s += R[i].c;

U[i] = true;

}

printf("Ves dereva raven = %d\n", s);

printf("V derevo vhodat rebra:\n");

for (int i = 1; i <= m; i++)

if (U[i]) printf("%d %d\n", R[i].a, R[i].b);

getch();

return 0;

}

Тестирование программы.

1) Входящие данные:

Результат:

2) Входящие данные:

Результат:

Заключение

В курсовой работе был реализован алгоритм для выделения минимального остовного дерева. По данному алгоритму была составлена программа, работа которой была продемонстрирована.

Список использованной литературы:

Кузнецов О.П. Дискретная математика для инженера, 3-е изд., перераб. и доп. – СПб: Издательство «Лань», 2004.

Соседние файлы в папке Курсовая работа - Выделение минимального остовного дерева