poj3310Caterpillar(树直径)
来源:互联网 发布:淘宝递四方价格 编辑:程序博客网 时间:2024/06/04 18:36
1.连通性
2.树
3.求直径
struct UNION { int F[101]; void init(int n = 0) { memset(F, -1,sizeof F); } int find(int u) { return F[u] == -1?u:F[u] = find(F[u]); } bool unit(int u,int v) { int t1 = find(u); int t2 = find(v); if (t1 == t2) return false; F[t1] = t2; return true; } bool check(int n) { int cnt = 0; for (int i = 1;i <= n;++i) if (F[i] == -1) cnt++; return cnt == 1; }}UF;vector<vector<int> > G;int dep[123];int pre[123];void dfs(int u,int fa) { for (int i = 0;i < G[u].size();++i) { int v = G[u][i]; if (v == fa) continue; dep[v] = dep[u] + 1; pre[v] = u; dfs(v, u); }}bool mark[123];int main(int argc, const char * argv[]){ // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); // clock_t _ = clock(); int n, m; while(~scanf("%d", &n) && n) { scanf("%d", &m); UF.init(); int u, v; G.clear(); G.resize(n + 2); bool flag = true; for (int i = 1;i <= m;++i) { scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); if (!UF.unit(u, v)) flag = false; } if (!flag || !UF.check(n)) { printf("Graph %d is not a caterpillar.\n", ++nCase); continue; } int st, ed; st = 1; dep[1] = 0; dfs(st, -1); ed = 1; for (int i = 1;i <= n;++i) if (dep[i] > dep[ed]) ed = i; dep[st = ed] = 0; dfs(st, -1); ed = 1; for (int i = 1;i <=n;++i) if (dep[i] > dep[ed]) ed = i; memset(mark, false,sizeof mark); int o = ed; while(o != st) { mark[o] = true; o = pre[o]; } mark[st] = true; flag = true; for (int i = 1;i <= n;++i) { if (mark[i]) continue; bool tmp = false; for (int j = 0;j < G[i].size();++j) { if (mark[G[i][j]]) { tmp = true; break; } } if (!tmp) flag = false; } if (!flag) printf("Graph %d is not a caterpillar.\n", ++nCase); else printf("Graph %d is a caterpillar.\n", ++nCase); } // printf("\nTime cost: %.2fs\n", 1.0 * (clock() - _) / CLOCKS_PER_SEC); return 0;}
0 0
- poj3310Caterpillar(树直径)
- bzoj3124 [Sdoi2013]直径 树的直径
- 【树的直径】
- 树的直径
- 求树的直径
- uvalive 5026 树-直径
- 树的最长直径
- HDU4607 树的直径
- URAL1056(树的直径)
- 树的直径hdu3721
- 树的直径
- 树的直径
- 树的重心、直径
- 树的直径
- leetcode 124 【树直径】
- 树的直径 【总结】
- poj1985 树的直径
- 树的直径
- Android 沉浸式状态栏 一设置状态栏颜色
- 解决bubbo+spring jar包冲突
- React之JSX入门
- 技术博客网站推荐
- 机器学习系列:(四)从线性回归到逻辑回归
- poj3310Caterpillar(树直径)
- Jimoshi_三大框架完成DLS-物流管理系统的车辆管理系统增删改
- 查找--二分查找
- 算法时间复杂度的计算【整理】
- 《notification》WEB开发桌面通知
- 在Android Studio中遇到seesion App Error installing APK解决办法
- Android之史上最全最简单最有用的第三方开源库收集整理
- Ubuntu 16 时间同步
- aaaa