POJ 3310 Caterpillar 并查集+dfs
来源:互联网 发布:淘宝定位在哪里设置 编辑:程序博客网 时间:2024/06/11 20:46
题意:判断一个图是否为树,并且有一条路径使得所有顶点在这条路径上或者这个点相邻的点在路径上。
先用并查集判断是否是一棵树,然后dfs回溯,每次遍历每个节点的所有子节点,然后找一个子节点扩展,看是否能遍历所有点,能就满足条件。
#include <iostream>#include <cstring>#include <cstdio>#include <vector>using namespace std;vector<int> e[105];int vis[105];int ans, anst, n;int find(int u) { while(~vis[u]) u = vis[u]; return u;}void dfs(int u, int d) { if(vis[u]) return; if(++d == n) { anst = 1; return; } vis[u]++; int td = 0; for(int i = 0; i < e[u].size(); i++) { if(vis[e[u][i]] == 0) td++; vis[e[u][i]]++; } for(int i = 0; i < e[u].size(); i++) { vis[e[u][i]]--; dfs(e[u][i], d + td - 1); vis[e[u][i]]++; } for(int i = 0; i < e[u].size(); i++) { vis[e[u][i]]--; } vis[u]--;}int main() { int m, i, j, a, b, ks = 1; while(~scanf("%d%d", &n, &m) && n) { memset(vis, -1, sizeof(vis)); for(i = 0; i <= n; i++) e[i].clear(); ans = 1; anst = 0; for(i = 0; i < m; i++) { scanf("%d%d", &a, &b); e[a].push_back(b); e[b].push_back(a); a = find(a); b = find(b); if(a == b) { ans = 0; } else vis[a] = b; } int t = 0; for(i = 1; i <= n; i++) if(vis[i] == -1) t++; if(t > 1) ans = 0; if(ans) { memset(vis, 0, sizeof(vis)); for(i = 1; i <= n; i++) { dfs(i, 0); } } if(ans && anst) printf("Graph %d is a caterpillar.\n", ks++); else printf("Graph %d is not a caterpillar.\n", ks++); } return 0;}/**881 22 33 44 53 63 76 87 8**/
0 0
- POJ 3310 Caterpillar 并查集+dfs
- POJ 3310 Caterpillar (BFS + DFS + 并查集)
- Poj 3310 Caterpillar (并查集判环+度)
- POJ 3310 Caterpillar
- 并查集+DFS
- POJ 3834 Graph Game 博弈 dfs+并查集剪枝
- POJ 1986 LCA 离线算法 dfs+并查集
- poj 1986LCA离线dfs+并查集
- POJ - 1308 Is It A Tree?(并查集+dfs)
- POJ1291-并查集/dfs
- 并查集思想+dfs
- hdu1198(DFS/并查集)
- poj 3310 Caterpillar 图的遍历
- [POJ 3310][树的直径]Caterpillar
- Poj 并查集
- poj并查集
- POJ 并查集
- POJ 3310(并查集)
- java流程控制语句的总结
- 2016 Multi-University Training Contest 10(2016多校训练第十场)1011
- mysql基础,命令行语法
- 制作原版电脑系统iso格式U盘启动教程
- stm32的
- POJ 3310 Caterpillar 并查集+dfs
- 解决Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal
- jQuery validata 验证
- Debian8 Jessie通过PPA安装Oracle Java8
- 模拟网络流量特征的自动提取(第二次更新)
- 32
- POJ 2584 T-Shirt Gumbo
- HDU 5855-最大权闭合图(-最小割应用)
- 信息战(七)——情报传递 计划搜索加大数据