COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/unionfind.h

    r457 r236  
    11781178            if (nodes[nodes[jd].next].size < cmax) {
    11791179              pushLeft(nodes[jd].next, nodes[jd].left);
    1180               if (nodes[jd].item == nodes[pd].item) {
    1181                 nodes[nodes[jd].next].prio = nodes[jd].prio;
    1182                 nodes[nodes[jd].next].item = nodes[jd].item;
     1180              if (less(nodes[jd].left, nodes[jd].next)) {
     1181                nodes[nodes[jd].next].prio = nodes[nodes[jd].left].prio;
     1182                nodes[nodes[jd].next].item = nodes[nodes[jd].left].item;
    11831183              }
    11841184              popLeft(pd);
     
    11891189              popLeft(nodes[jd].next);
    11901190              pushRight(jd, ld);
    1191               if (less(ld, nodes[jd].left) ||
    1192                   nodes[ld].item == nodes[pd].item) {
     1191              if (less(ld, nodes[jd].left)) {
    11931192                nodes[jd].item = nodes[ld].item;
    1194                 nodes[jd].prio = nodes[ld].prio;
     1193                nodes[jd].prio = nodes[jd].prio;
    11951194              }
    11961195              if (nodes[nodes[jd].next].item == nodes[ld].item) {
     
    12211220            if (nodes[nodes[jd].prev].size < cmax) {
    12221221              pushRight(nodes[jd].prev, nodes[jd].right);
    1223               if (nodes[jd].item == nodes[pd].item) {
    1224                 nodes[nodes[jd].prev].prio = nodes[jd].prio;
    1225                 nodes[nodes[jd].prev].item = nodes[jd].item;
     1222              if (less(nodes[jd].right, nodes[jd].prev)) {
     1223                nodes[nodes[jd].prev].prio = nodes[nodes[jd].right].prio;
     1224                nodes[nodes[jd].prev].item = nodes[nodes[jd].right].item;
    12261225              }
    12271226              popRight(pd);
     
    12321231              popRight(nodes[jd].prev);
    12331232              pushLeft(jd, ld);
    1234               if (less(ld, nodes[jd].right) ||
    1235                   nodes[ld].item == nodes[pd].item) {
     1233              if (less(ld, nodes[jd].right)) {
    12361234                nodes[jd].item = nodes[ld].item;
    1237                 nodes[jd].prio = nodes[ld].prio;
     1235                nodes[jd].prio = nodes[jd].prio;
    12381236              }
    12391237              if (nodes[nodes[jd].prev].item == nodes[ld].item) {
     
    14031401              push(new_id, right_id);
    14041402              pushRight(new_id, ~(classes[r].parent));
    1405 
    1406               if (less(~classes[r].parent, right_id)) {
    1407                 nodes[new_id].item = nodes[~classes[r].parent].item;
    1408                 nodes[new_id].prio = nodes[~classes[r].parent].prio;
    1409               } else {
    1410                 nodes[new_id].item = nodes[right_id].item;
    1411                 nodes[new_id].prio = nodes[right_id].prio;
    1412               }
     1403              setPrio(new_id);
    14131404
    14141405              id = nodes[id].parent;
     
    14501441              push(new_id, left_id);
    14511442              pushLeft(new_id, ~(classes[l].parent));
    1452 
    1453               if (less(~classes[l].parent, left_id)) {
    1454                 nodes[new_id].item = nodes[~classes[l].parent].item;
    1455                 nodes[new_id].prio = nodes[~classes[l].parent].prio;
    1456               } else {
    1457                 nodes[new_id].item = nodes[left_id].item;
    1458                 nodes[new_id].prio = nodes[left_id].prio;
    1459               }
     1443              setPrio(new_id);
    14601444
    14611445              id = nodes[id].parent;
Note: See TracChangeset for help on using the changeset viewer.