并查集练习3:HDOJ4496 WA
来源:互联网 发布:淘宝指定商品优惠券 编辑:程序博客网 时间:2024/06/06 05:05
考虑的问题是动态删除连接。
如果多次建并查集,时间复杂度太高了,考虑如何只建立一次。
或者也可以反向进行建立,然后存起来,再反向输出。但是这样也要存输入的数据。
所以尝试逆序进行。
结果不正确:
#include <iostream>#include <string.h>using namespace std;int findroot(int a) ;void unionroot(int a, int b) ;int city[10005] ;int weight[10005] ;int saveinput[100005][2], result[100005];int main(){ int N = 0,M = 0 ; int roota,rootb ; cin >> N >> M; for(int i = 0; i< N ; i++) { city[i] = i ; weight[i] = 1 ; } for(int i = 1 ; i <= M ; i++) cin >> saveinput[i][0] >> saveinput[i][1] ; result[M] = N ; for(int i = M ; i > 0; i--) { roota = findroot(saveinput[i][0]) ; rootb = findroot(saveinput[i][1]) ; if(roota != rootb) { unionroot(roota, rootb) ; result[i-1] = result[i] - 1 ; } else result[i-1] = result[i]; } for(int i = 1 ; i <= M ; i++) cout << result[i] << endl ; return 0;}int findroot(int a){ while(a!=city[a]) { a = city[a] ; } return a ;}void unionroot(int a, int b){ if(weight[a]>weight[b]) { city[b] = a ; weight[a]+=weight[b] ; } else { city[a] = b ; weight[b]+=weight[a] ; }}
0 0
- 并查集练习3:HDOJ4496 WA
- 水<并查集,但是WA好久>
- 并查集练习
- 并查集&求指出思路为啥WA。。
- 并查集练习---poj 1417 并查集+DP
- POJ 1308 HDU 1358 Is It A Tree? 并查集 (好多WA点)
- 并查集专题练习(一)POJ1611
- 并查集练习---poj 1182 食物链
- 并查集练习---poj 1984
- 并查集练习---poj 2912
- 并查集及 编程练习
- 并查集入门水题练习
- Friend解题报告 - 并查集练习
- 编程练习四(并查集)
- 【带权并查集】 练习
- 并查集练习1:HDOJ1213
- 并查集练习2:HDOJ1232
- 并查集练习4:HDOJ1272
- JPA和Hibernate的一些概念
- c# 三种取整方法 向上取整 向下取整 四舍五入
- 深入浅出的讲解傅里叶变换
- 【面试题】大数据计算
- 继续畅通工程
- 并查集练习3:HDOJ4496 WA
- 设计模式之工厂模式
- 信息系统项目管理知识--信息安全
- 编辑距离
- 读后感
- RHEL-RH134-UNIT5-使用逻辑卷管理器管理灵活存储
- Spring Cache抽象详解
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
- Spring定时器demo