LCA 算法之tarjan 和 并查集
来源:互联网 发布:韩国网络女模特排行榜 编辑:程序博客网 时间:2024/05/07 04:19
这两个地址看了就懂了
在这个网站看并查集:http://www.nocow.cn/index.php/%E5%B9%B6%E6%9F%A5%E9%9B%86
tarjan算法:http://noalgo.info/476.html
#include <iostream>#include <cstdio>#include <vector>#include <cstring>using namespace std;const int MAX = 10000;int n,root;bool flag[MAX];vector<int> tree[MAX];void inputTree(){ cin >> n; for (int i = 0; i != n; i++) { tree[i].clear(); flag[i] = false; } for (int i = 0; i != n-1; i++) { int t1, t2; cin >> t1 >> t2; tree[t1].push_back(t2); flag[t2] = true; } for (int i = 0; i != n; i++) if (flag[i] == false) { root = i; break; }}vector<int> query[MAX];void inputQuery(){ for (int i = 0; i != n; i++) { query[i].clear(); } int m; cin >> m; while (m--) { int u,v; cin >> u >> v; query[u].push_back(v); query[v].push_back(u); }}int f[MAX], rnk[MAX];//表示秩(高度)void makeSet(){ for (int i = 0; i != n; i++) { f[i] = i; rnk[i] = 0; }}int findSet(int tmp){ int x = tmp; while (x != f[x]) { x = f[x]; } int y = tmp,z; while (y != x) { z = f[y]; f[y] = x; y = z; } return x;}void unionSet(int x,int y){ x = findSet(x), y = findSet(y); if (x == y) return ; if (rnk[x] > rnk[y]) f[y] = x; else f[x] = y,rnk[y] += rnk[x] == rnk[y];}int ancestor[MAX];bool vis[MAX];void tarjan(int x){ for (int i = 0; i != tree[x].size(); i++) { tarjan(tree[x][i]); unionSet(x,tree[x][i]); ancestor[findSet(x)] = x; } vis[x] = true; for (int i = 0; i < query[x].size(); i++) { if (vis[query[x][i]]) printf("%d he %d ancestor is %d\n",x,query[x][i],ancestor[findSet(query[x][i])]); }}int main(){ inputTree(); //输入树 inputQuery();//输入查询 makeSet(); for (int i = 0; i < n; i++) ancestor[i] = i; memset(vis, 0, sizeof(vis)); //初始化为未访问 tarjan(root); return 0;}
0 0
- LCA 算法之tarjan 和 并查集
- LCA离线算法Tarjan+并查集
- 【LCA】Tarjan离线算法(并查集+dfs)模板
- LCA,RMQ,并查集, tarjan算法等相关
- poj3694 LCA+并查集+tarjan求割边
- LCA-并查集+tarjan-poj2874
- POJ 1330(LCA tarjan 并查集)
- hdu 2586 LCA离线算法 Tarjan+并查集 O(n+q)
- LCA(最近公共祖先)离线算法Tarjan+并查集
- HDU ACM 2586 How far away ?LCA->并查集+Tarjan(离线)算法
- 最近公共祖先(LCA)——离线Tarjan算法+并查集优化
- LCA之TARJAN算法
- POJ-3694-Network(Tarjan+LCA+并查集)
- POJ3694(tarjan缩点+并查集+LCA)
- LCA之Tarjan算法解析
- LCA算法--并查集应用
- 由LCA引发的问题--RMQ,Tarjan,并查集等
- 由LCA引发的问题--RMQ,Tarjan,并查集等
- 【UML之宏观了解】
- 时时程序开发重庆时时北京赛车平台制作维护
- JAVA中Charsequence和String的区别
- 【教程】PhotoShop怎么抠图加白底。
- bzoj 1503 [NOI2004]郁闷的出纳员 平衡树(treap/Splay)
- LCA 算法之tarjan 和 并查集
- Android知识点记录: 使用代码设置 android 上listView的条目的点击背景颜色
- centos7&openstack_kilo完全离线快速allinone和multi-nodes部署
- 【数据挖掘】关联规则和Apriori算法
- iOS之关灯小游戏
- Java学习笔记
- idea:pom导入包报错
- double list
- SQL 查询出两个字段相同的大于一行的数