HDU 5923 Prediction (并查集)
来源:互联网 发布:java开发app 编辑:程序博客网 时间:2024/03/29 00:51
题意: 给定一个图
思路:好题,使用了并查集的联通块判断数,同时还使用了类似可持续化的思想,保存树上任意节点
#include <iostream>#include <stack>#include <queue>#include <vector>#include <map>#include <string>#include <string.h>#include <cstring>#include <cstdlib>#include <set>#include <algorithm>#include <cctype>#include<cmath>#include <sstream>#include<cstdio>#include <bitset>using namespace std;#define sp system("pause");typedef long long ll;typedef pair<int, int> pii;typedef pair<string, int> psi;#define eps 1e-9 #define PI acos(-1.0)//typedef long long LL;//typedef __int64 LL;const int MAXN = 600;const int MAXM = 30000;vector<int>t[MAXM];int g[MAXM][2];int fa[MAXM][MAXN];int ans[MAXN];int getfa(int d, int x){ return fa[d][x] == x ? x : fa[d][x] = getfa(d, fa[d][x]);}void merge(int d, int a, int b){ int faa = getfa(d, a); int fbb = getfa(d, b); if (faa != fbb) { if (faa > fbb)swap(faa, fbb); fa[d][fbb] = fa[d][faa]; }}int n, m;void dfs(int f, int u){ for (int i = 1; i <= n; i++)fa[u][i] = fa[f][i]; merge(u, g[u-1][0], g[u-1][1]); for (int i = 0; i < t[u].size(); i++) if (t[u][i] != f) dfs(u, t[u][i]);}int main(){ int T; cin >> T; int cas = 1; while (T--) { printf("Case #%d:\n", cas++); scanf("%d%d", &n, &m); for (int i = 0; i <=m; i++)t[i].clear(); for (int i = 1; i < m; i++) { int u; scanf("%d", &u); t[u].push_back(i + 1); } for (int i = 0; i < m; i++) scanf("%d%d", &g[i][0], &g[i][1]); for (int i = 0; i <= n; i++)fa[0][i] = i; dfs(0, 1); int q; scanf("%d", &q); while (q--) { for (int i = 0; i <= n; i++)fa[m + 1][i] = i; int tn; scanf("%d", &tn); for (int i = 0; i < tn; i++) { int x; scanf("%d", &x); for (int j = 1; j <= n; j++) merge(m + 1, j, getfa(x, j)); } int aans = 0; for (int i = 1; i <= n; i++)if (fa[m + 1][i] == i)aans++; printf("%d\n", aans); } }}
0 0
- HDU 5923 Prediction 并查集 合并
- HDU 5923 Prediction (并查集)
- [HDU 5923]Prediction:并查集
- HDU 5923 Prediction [可持久化并查集]【数据结构】
- HDU-5923 Prediction(并查集/暴力)
- HDU5923——Prediction(数据结构,并查集)
- HDU 5923 (并查集)
- HDU 5923Prediction
- HDU 3371 并查集
- HDU 2473 并查集
- hdu 1116 并查集
- HDU 1856 并查集
- HDU 1598 并查集
- HDU-1232 并查集
- 【并查集】hdu 2818
- hdu 1232 并查集
- hdu 1856(并查集)
- HDU 1598 并查集
- 测试apsx与aspx.cs 关系
- 用正则表达式统计java工作行,注释行,空白行
- python进行基本的图像处理
- mysql数据库数据类型
- bootstrap select2 动态改变值
- HDU 5923 Prediction (并查集)
- 怎样编辑pdf文件的重点部分
- Android-6步教你自定义View
- RBAC数据库的设计
- 463. Island Perimeter | 岛屿的周长
- 回忆之前丢掉的两个点
- ios适配
- 利用仿函数实现定制删除器
- C#读取Microsoft Access数据库文件