提升图库:设置边权重值

And*_*yUK 5 c++ boost-graph

我正在调查使用boost图库,以便将它们应用到我想到的各种网络问题中.

在示例中,我一直在查看图形边缘值("权重")总是初始化为整数,例如在这些Bellman-FordKruskal算法中,例如:

int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 };
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我尝试将权重更改为加倍,我会得到一堆关于转换等的警告消息,到目前为止,我还无法弄清楚如何克服.

有没有人看到这个方法?

bao*_*aol 6

它是由weights[]阵列和增强图/算法用于边缘权重的类型之间的不匹配引起的.

在第一个链接的样本中,例如,您也应该更改

struct EdgeProperties {
  int weight;
};
[...]
property_map<Graph, int EdgeProperties::*>::type 
Run Code Online (Sandbox Code Playgroud)

struct EdgeProperties {
  double weight;
};
[...]
property_map<Graph, double EdgeProperties::*>::type 
Run Code Online (Sandbox Code Playgroud)

在第二

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, int > > Graph;
Run Code Online (Sandbox Code Playgroud)

typedef adjacency_list < vecS, vecS, undirectedS,
    no_property, property < edge_weight_t, double > > Graph;
Run Code Online (Sandbox Code Playgroud)