Взвешенный граф

340
27 декабря 2016, 00:41

Есть точки вершин : 1(1,5), 2(3,2) и т.д. Вероятно для определения веса ребра. Используется формула для вычисления длины отрезка на плоскости. Далее есть список смежности: 1 2, 4 2, 3 1 и т.д. Как это объединить? Т.е. вот составлю матрицу смежности, а вес к этому каким образом прибавить?

Answer 1

Вот ваш правленный код:

#include <stdio.h>
#include <math.h>
typedef struct
{
    int n1;
    int n2;
} Nodes;
typedef struct
{
    double x;
    double y;
} CoordXY;
int main()
{
    double temp[4][4] = { 0 };
    for (int r = 0; r < 4; r++)
        for (int j = 0; j < 4; j++)
            temp[r][j] = (r==j) ? 0 : -1;
    static Nodes pNode[] = { { 1, 2 }, { 0, 1 }, { 1, 3 }, { 3, 2 } };
    static CoordXY pCord[] = { { 2, 6 }, { 10, 8 }, { 6, 10 }, { 8, 4 } };
    for (int i = 0; i < sizeof(pNode)/sizeof(pNode[0]); i++)
    {
        int from = pNode[i].n1;
        int to   = pNode[i].n2;
        double dx = pCord[from].x - pCord[to].x;
        double dy = pCord[from].y - pCord[to].y;
        temp[from][to] = temp[to][from] = sqrt(dx*dx + dy*dy);
    }
    for (int t1 = 0; t1 < 4; t1++)
    {
        for (int t2 = 0; t2 < 4; t2++)printf("%lf ", temp[t1][t2]);
        printf("\n");
    }
    return 0;
}

0 - для петли из себя в себя же :), -1 - отсутствие ребра.

READ ALSO
QScrollArea и компоновка виджетов

QScrollArea и компоновка виджетов

Есть QScrollArea и на нее нужно положить несколько виджетовЕсли сразу положить на нее layout, тогда все адекватно отображается, но ничего не скроллится(не...

387
Удалить все слова с удвоенными буквами

Удалить все слова с удвоенными буквами

Нужно использовать strtok, я не могу понять как мне проверить каждое слово из введённого массива символов, допустим:

401
Таблица синуса и косинуса

Таблица синуса и косинуса

Ради оптимизации решил сделать табличку в которой будут лежать синусы и косинусыРисует почти как надо

315
Объектный полиморфизм

Объектный полиморфизм

Есть QTabWidget tabsВ нем лежат виджеты вкладок, в каждой вкладке есть layout, в этом layout'e QScrollArea со своим layout'om

339