hdu 4786 Fibonacci Tree 乱搞 智商题目 最小生成树
来源:互联网 发布:windows虚拟机安卓版 编辑:程序博客网 时间:2024/04/28 12:41
首先计算图的联通情况,如果图本身不联通一定不会出现生成树,输出"NO",之后清空,加白边,看最多能加多少条,清空,加黑边,看能加多少条,即可得白边的最大值与最小值,之后判断Fibonacci数是否在这两个之间,如果是输出yes,否则no。
然而,,然而,,我看的题解有问题!!!!!调了俩小时愣是没找出错误来,,然后把题解交了发现过不了,,,,真是够了。,。,。,
第二天上午终于A了,,满分程序:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5 struct data { 6 int x1; 7 int y1; 8 int z1; 9 };10 const int maxn = 200000 + 500;11 int father[maxn];12 int f[maxn];13 data p[maxn];14 int T;15 int n, m;16 17 bool cmp(data aa, data bb) {18 return (aa.z1 < bb.z1);19 }20 21 int getfather(int x) {22 if (father[x] == x) return x;23 return (father[x] = getfather(father[x]));24 }25 26 bool solve (void) {27 int cur = n;28 for (int i = 1; i <= m; i++) {29 int tx = getfather(p[i].x1);30 int ty = getfather(p[i].y1);31 if (tx != ty) {32 father[tx] = ty;33 cur--;34 }35 }36 if (cur > 1) return 1;37 return 0;38 } 39 40 int main () {41 f[1] = 1;42 f[2] = 1;43 for (int i = 3; i <= 40; i++) {44 f[i] = f[i-1] + f[i-2];45 }46 scanf("%d", &T);47 for (int kase = 1; kase <= T; kase++) {48 printf("Case #%d: ", kase);49 scanf("%d %d", &n, &m);50 for (int i = 1; i <= n; i++) father[i] = i;51 for (int i = 1; i <= m; i++) scanf("%d %d %d", &p[i].x1, &p[i].y1, &p[i].z1);52 std :: sort(p + 1, p + m + 1, cmp);53 if (solve()) printf("No\n");54 else {55 for (int i = 1; i <= n; i++) father[i] = i;56 int smin = 0;57 for (int i = 1; i <= m; i++) {58 int tx = getfather(p[i].x1);59 int ty = getfather(p[i].y1);60 if (tx != ty) {61 father[tx] = ty;62 if (p[i].z1 == 1) smin++;63 }64 }65 int smax = 0;66 for (int i = 1; i <= n; i++) father[i] = i;67 for (int i = m; i >= 1; i--) {68 int tx = getfather(p[i].x1);69 int ty = getfather(p[i].y1);70 if (tx != ty) {71 father[tx] = ty;72 if (p[i].z1 == 1) smax++;73 }74 }75 bool flag = 0;76 for (int i = 1; i <= 40; i++) 77 if (smin <= f[i] && smax >= f[i]) {78 flag = 1;79 break;80 }81 if (flag) printf("Yes\n");82 else printf("No\n");83 }84 }85 return 0;86 }
1 0
- hdu 4786 Fibonacci Tree 乱搞 智商题目 最小生成树
- HDU 4786 Fibonacci Tree(生成树,YY乱搞)
- hdu 4786 Fibonacci Tree ( 最小生成树 )
- HDU 4786 Fibonacci Tree 最小生成树
- HDU 4786 Fibonacci Tree 最小生成树 kruskal算法
- HDU - 4786 Fibonacci Tree (最小生成树)
- HDU-#4786 Fibonacci Tree(最大最小生成树)
- hdu 4786 Fibonacci Tree (最小生成树扩展)
- HDU 4786--Fibonacci Tree【并查集,最小生成树】
- hdu 4786 Fibonacci Tree(最小生成树)
- HDU-4786 Fibonacci Tree(最小生成树[Kruskal])
- HDU 4786 Fibonacci Tree(最小生成树)
- hdu 4786 Fibonacci Tree(最小生成树)
- HDU 4786 Fibonacci Tree kruskal最小生成树应用
- HDU 4786 Fibonacci Tree (最小生成树变形)
- hdu 4786 Fibonacci Tree(最小生成树)
- hdu 4786 Fibonacci Tree(最小生成树变形)
- HDU 4786 Fibonacci Tree(最小生成树变式)
- 数据库学习
- 关于CreateThread()的几点疑惑
- 银河英雄传说 洛谷1196 并查集
- 修复公路 洛谷1111 并查集 水题
- Spring Mvc那点事---(39)SSM服务框架搭建
- hdu 4786 Fibonacci Tree 乱搞 智商题目 最小生成树
- 埃及分数 迭代加深搜索 IDA*
- hdu 4496 并查集 逆向 并查集删边
- poj3134 Power Calculus IDA*
- POJ2286 The Rotation Game IDA*
- AngularJS中ng-class和class的区别
- android 类似豆瓣读书,提供一个书籍查看、搜索、交流的平台
- mayan 游戏 search
- 02-线性结构4 Pop Sequence (25分)