博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hiho13周暴力求lca
阅读量:5322 次
发布时间:2019-06-14

本文共 1281 字,大约阅读时间需要 4 分钟。

先求一个节点的所有先人,然后从另外一个节点开始向上找,找到第一个共同的先人就是最近公共祖先。

#include
#include
#include
#include
using namespace std;int fathe[1222];int color[122];int father[1222];int getfather(int x){ if (x != fathe[x]) fathe[x] = getfather(fathe[x]); return fathe[x];}void add(int a, int b){ int fa = getfather(a); int fb = getfather(b); fathe[fa] = fb;}void Find(int x){ while (father[x]!=-1&&father[x]!=x){ color[x] = 1; x = father[x]; } color[x] = 1;}int find1(int x){ while(father[x]!=-1&&father[x]!=x){ if(color[x]) return x; x = father[x] ; } return x;}int main(){ int n; string a,b; //memset(color,0,sizeof(color)); memset(father,-1,sizeof(father)); map
m; map
m1; cin >> n; int sum = 1; for(int i =1;i<=1000;i++) fathe[i] = i; for (int i = 0; i < n; i++){ cin >> a >> b; int c; int d; if (!m.count(a)) m[a] = sum, m1[sum] = a,sum++; if (!m.count(b)) m[b] = sum, m1[sum] = b,sum++; c = m[a]; d = m[b]; father[d] = c; add(d, c); } int q; cin >> q; for (int i = 0; i < q; i++){ memset(color,0,sizeof(color)); cin >> a >> b; if(!m.count(a)||!m.count(b)){ if(a==b) cout<
<

 

转载于:https://www.cnblogs.com/yigexigua/p/4072673.html

你可能感兴趣的文章
error LNK2019: 无法解析的外部符号 该符号在函数 中【转】http://blog.sina.com.cn/s/blog_51890fea0100l41h.html...
查看>>
怎么卸载hexo
查看>>
如何将域名部署到Tomcat中,用域名访问服务器
查看>>
08.08 web字体 :语法 兼容性写法 字体格式 工具 字体颜图标 多列布局:相关属性 伸缩盒:概念 相关属性...
查看>>
南阳737----石子合并(一)
查看>>
js、jquery中全局替换replace
查看>>
一次U9身份验证http数据对接
查看>>
使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)
查看>>
Android 发展思路
查看>>
Pythonic
查看>>
contentprovider的学习实例总结
查看>>
Sharepoint 自定义字段
查看>>
TQ2440之中断
查看>>
MySQL 触发器简单实例
查看>>
codeforces 712A. Memory and Crow
查看>>
Latex Undefined control sequence. ...\bm
查看>>
MySQL------报错Access denied for user 'root'@'localhost' (using password:NO)解决方法
查看>>
车牌识别LPR(三)-- LPR系统整体结构
查看>>
log4j异常:WARN No appenders could be found for logger
查看>>
新手村之顺序与分支
查看>>