Блок-схемы
В данной работе
представлена программа для реализации
алгоритма Прима.
Листинг программы
#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.