Changeset 436:561be42c4b99 in lemon-main
- Timestamp:
- 12/21/08 00:13:02 (16 years ago)
- Branch:
- default
- Children:
- 437:6c1ac149ebf8, 438:81d40f1c850c
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/unionfind.h
r236 r436 1178 1178 if (nodes[nodes[jd].next].size < cmax) { 1179 1179 pushLeft(nodes[jd].next, nodes[jd].left); 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;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; 1183 1183 } 1184 1184 popLeft(pd); … … 1189 1189 popLeft(nodes[jd].next); 1190 1190 pushRight(jd, ld); 1191 if (less(ld, nodes[jd].left)) { 1191 if (less(ld, nodes[jd].left) || 1192 nodes[ld].item == nodes[pd].item) { 1192 1193 nodes[jd].item = nodes[ld].item; 1193 nodes[jd].prio = nodes[ jd].prio;1194 nodes[jd].prio = nodes[ld].prio; 1194 1195 } 1195 1196 if (nodes[nodes[jd].next].item == nodes[ld].item) { … … 1220 1221 if (nodes[nodes[jd].prev].size < cmax) { 1221 1222 pushRight(nodes[jd].prev, nodes[jd].right); 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;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; 1225 1226 } 1226 1227 popRight(pd); … … 1231 1232 popRight(nodes[jd].prev); 1232 1233 pushLeft(jd, ld); 1233 if (less(ld, nodes[jd].right)) { 1234 if (less(ld, nodes[jd].right) || 1235 nodes[ld].item == nodes[pd].item) { 1234 1236 nodes[jd].item = nodes[ld].item; 1235 nodes[jd].prio = nodes[ jd].prio;1237 nodes[jd].prio = nodes[ld].prio; 1236 1238 } 1237 1239 if (nodes[nodes[jd].prev].item == nodes[ld].item) { … … 1401 1403 push(new_id, right_id); 1402 1404 pushRight(new_id, ~(classes[r].parent)); 1403 setPrio(new_id); 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 } 1404 1413 1405 1414 id = nodes[id].parent; … … 1441 1450 push(new_id, left_id); 1442 1451 pushLeft(new_id, ~(classes[l].parent)); 1443 setPrio(new_id); 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 } 1444 1460 1445 1461 id = nodes[id].parent;
Note: See TracChangeset
for help on using the changeset viewer.