简介 目录 评价 推荐
  • 慕粉3672057 2017-08-30
    mergeNodeSet
    截图
    0赞 · 0采集
  • 慕粉3672057 2017-08-30
    nodeSets
    截图
    0赞 · 0采集
  • 精慕门4947531 2016-11-11
    void DMap::kruskalTree() { int value=0; int edgeCount=0; //定义存放结点集合的数组 vector<vector<int>> nodeSets; //第一步取出所有边; 主对角线上半部分矩阵 vector<Edge>edgeVect; for(int i=0;i<m_iCapacity;i++) { for(int k=i+1;k<m_iCapacity;k++) { getValueFromMatrix(i,k,value); if(value!=0) { Edge edge(i,k,value); edgeVect.push_back(edge); } } } //第二步从所有边取出组成最小生成树的边 //1.找出算法的终结条件 while(edgeCount<m_iCapacity-1) { //2.从边集合找到最小边 int minEdgeIndex=getMinEdge(edgeVect); edgeVect[minEdgeIndex].m_bSelected=true; //3.找到最小边连接的点 int nodeAIndex=edgeVect[minEdgeIndex].m_iNodeIndexA; int nodeBIndex=edgeVect[minEdgeIndex].m_iNodeIndexB; bool nodeAisInSets=false; bool nodeBisInSets=false; int nodeAInSetLabel=-1; int nodeBInSetLabel=-1; //4.找到点所在的点集合 for(int i=0;i<(int)nodeSets.size();i++) { nodeAisInSets=isInSets(nodeSets[i],nodeAIndex); if(nodeAisInSets) { nodeAInSetLabel=i; } } for(int i=0;i<(int)nodeSets.size();i++) {
    1赞 · 2采集
数据加载中...
开始学习 免费