{"id":30859098,"url":"https://github.com/sufftea/link-cut-treeez","last_synced_at":"2025-09-07T14:57:08.777Z","repository":{"id":135809320,"uuid":"311402787","full_name":"sufftea/Link-Cut-Treeez","owner":"sufftea","description":"Link-cut trees visualisation on Qt C++","archived":false,"fork":false,"pushed_at":"2021-03-20T16:25:34.000Z","size":66586,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-07-19T22:29:58.882Z","etag":null,"topics":["algorithms","cpp","qt","visualization"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sufftea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-11-09T16:44:16.000Z","updated_at":"2023-07-19T22:30:01.973Z","dependencies_parsed_at":"2023-06-29T19:31:29.537Z","dependency_job_id":null,"html_url":"https://github.com/sufftea/Link-Cut-Treeez","commit_stats":null,"previous_names":["sanihai/link-cut-treeez","sufftea/link-cut-treeez"],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/sufftea/Link-Cut-Treeez","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufftea%2FLink-Cut-Treeez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufftea%2FLink-Cut-Treeez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufftea%2FLink-Cut-Treeez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufftea%2FLink-Cut-Treeez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sufftea","download_url":"https://codeload.github.com/sufftea/Link-Cut-Treeez/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sufftea%2FLink-Cut-Treeez/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274051992,"owners_count":25214030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","cpp","qt","visualization"],"created_at":"2025-09-07T14:56:51.696Z","updated_at":"2025-09-07T14:57:08.757Z","avatar_url":"https://github.com/sufftea.png","language":"C++","readme":"﻿# Link-Cut-Treeez\n\nLink cut trees visualization.\n\n# Abstract/represented tree\n![](pics/abstract_tree.gif)\n\n# Concrete/auxiliary tree\n![](pics/concrete_tree.gif)\n\n# A brief explanation of what it is\nLink cut tree is able to perform the following operations in O(log(n)) amortized time:\n- path-aggregate operations (on the path form node v to its root)\n  - sum(v)\n  - min(v)\n  - max(v)\n- find_root(v)\n- LCA(v, u);\n- add_const(v) (not implemented) - add a constant to each node on the path from v to its root\n\n### Abstract or represented tree\nAbstract tree is not stored in the memory; it's the way we imagine a link-cut tree when working with it, thus the name.\nEach node can have an unlimited number of children and one prefered child (has red edge on the visualisation).\nA chain of preferred children forms a preferred path. \n\nexpose(v) seelects all the edges on the path from v to its root to make the path prefered.\nThe path-aggregate operations described above are performed on prefered paths.\n\n### Concrete or auxiliary tree\nThe way link-cut tree is actually stored in the memory.\nIt's a forest of splay trees where each splay tree represents a phrefered path in the Abstract tree.\nThe root of each splay tree contains a path-parent pointer to the path's predecessor in the abstract tree.\n\n\n\n## I waas adding those while developing the program:\n## Update1:\n![](pics/progress_so_far.gif?raw=true \"Title\")\n\n## Update2:\n![](pics/update2.gif?raw=true \"Title\")\n\n## Update3\n![](pics/update3.gif?raw=true \"Title\")\n\n## Update4\n![](pics/Update4.gif?raw=true \"Title\")\n\n## Update5\n![](pics/Update5.gif?raw=true \"Title\")\n\n## Update6\n![](pics/Update6.gif?raw=true \"Title\")\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufftea%2Flink-cut-treeez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsufftea%2Flink-cut-treeez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsufftea%2Flink-cut-treeez/lists"}