day55
并查集功能:
1、寻找根节点,函数:find(int u),判断这个节点的祖先节点是哪个
2、将两个节点接入到同一个集合,函数:join(int u, int v),将两个节点连在同一个根节点上
3、判断两个节点是否在同一个集合,函数:isSame(int u, int v),就是判断两个节点是不是同一个根节点
代码模板:
int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好
vector father = vector (n, 0); // C++里的一种数组结构
// 并查集初始化
void init() {
for (int i = 0; i < n; ++i) {
father[i] = i;
}
}
// 并查集里寻根的过程
int find(int u) {
return u == father[u] ? u : father[u] = find(father[u]); // 路径压缩
}
// 判断 u 和 v是否找到同一个根
bool isSame(int u, int v) {
u = find(u);
v = find(v);
return u == v;
}
// 将v->u 这条边加入并查集
void join(int u, int v) {
u = find(u); // 寻找u的根
v = find(v); // 寻找v的根
// 如果发现根相同,则说明在一个集合,不用两个节点相连直接返回
if (u == v) return ;
father[v] = u;
}
今天得开始写毕业论文了,先把框架整理好!最近学了workflow作为客户端和服务端(http服务器和静态资源管理服务器),开始学wfrest包装的workflow作为HTTP服务器,主要是减少了url提取查询参数,方法,路径这些复杂的字符串切割操作,简化了workflow服务端的使用。
1、寻找根节点,函数:find(int u),判断这个节点的祖先节点是哪个
2、将两个节点接入到同一个集合,函数:join(int u, int v),将两个节点连在同一个根节点上
3、判断两个节点是否在同一个集合,函数:isSame(int u, int v),就是判断两个节点是不是同一个根节点
代码模板:
int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好
vector
// 并查集初始化
void init() {
for (int i = 0; i < n; ++i) {
father[i] = i;
}
}
// 并查集里寻根的过程
int find(int u) {
return u == father[u] ? u : father[u] = find(father[u]); // 路径压缩
}
// 判断 u 和 v是否找到同一个根
bool isSame(int u, int v) {
u = find(u);
v = find(v);
return u == v;
}
// 将v->u 这条边加入并查集
void join(int u, int v) {
u = find(u); // 寻找u的根
v = find(v); // 寻找v的根
// 如果发现根相同,则说明在一个集合,不用两个节点相连直接返回
if (u == v) return ;
father[v] = u;
}
今天得开始写毕业论文了,先把框架整理好!最近学了workflow作为客户端和服务端(http服务器和静态资源管理服务器),开始学wfrest包装的workflow作为HTTP服务器,主要是减少了url提取查询参数,方法,路径这些复杂的字符串切割操作,简化了workflow服务端的使用。
全部评论
相关推荐
2024-12-19 11:22
江西科技学院附属中学 C++ 点赞 评论 收藏
分享
2024-12-17 10:36
天津大学 机械设计师 点赞 评论 收藏
分享