题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4263

思路:将红边和蓝边单独求一次生成树,求的红边最多可以加入的边数cntr,蓝边最多可以加入的边数cntb,只要k满足条件k>=(n-1-cntr)&&k<=cntb,就说明可以生成这样的spanning tree.

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 #define MAXN 1100
 7 int parent[MAXN];
 8 int n,m,k;
 9 struct Edge{
10    int u,v;
11 }B[MAXN*MAXN],R[MAXN*MAXN];
12
13 int Find(int x)
14 {
15    if(x==parent[x])
16       return parent[x];
17    parent[x]=Find(parent[x]);
18    return parent[x];
19 }
20
21 bool Union(int u,int v)
22 {
23    int r1=Find(u),r2=Find(v);
24    if(r1==r2)return false;
25    parent[r1]=r2;
26    return true;
27 }
28
29
30 int main()
31 {
32  //  freopen("1.txt","r",stdin);
33    int ansb,ansr,cntb,cntr;
34    char str[4];
35    while(scanf("%d%d%d",&n,&m,&k),(n+m+k))
36    {
37       ansb=ansr=cntb=cntr=0;
38       for(int i=1;i<=m;i++){
39          scanf("%s",str);
40          if(str[0]=='B'){
41             scanf("%d%d",&B[cntb].u,&B[cntb].v);
42             cntb++;
43          }else {
44             scanf("%d%d",&R[cntr].u,&R[cntr].v);
45             cntr++;
46          }
47       }
48       for(int i=1;i<=n;i++)parent[i]=i;
49       for(int i=0;i<cntb;i++){
50          int u=B[i].u,v=B[i].v;
51          if(Union(u,v))ansb++;
52       }
53       for(int i=1;i<=n;i++)parent[i]=i;
54       for(int i=0;i<cntr;i++){
55          int u=R[i].u,v=R[i].v;
56          if(Union(u,v))ansr++;
57       }
58       if(k>=(n-1-ansr)&&k<=ansb){
59          puts("1");
60       }else
61          puts("0");
62    }
63    return 0;
64 }

View Code

hdu 4263(有限制的生成树)相关推荐

  1. hdu 3367 Pseudoforest (最大生成树 最多存在一个环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3367 Pseudoforest Time Limit: 10000/5000 MS (Java/Oth ...

  2. HDU 6836 Expectation(矩阵生成树 + 期望)

    Expectation 思路 题目要求每个生成树边权&\&&的期望值,假设当前这颗生成树对二进制数的第iii位有贡献,则这个位上的构成生成树的边权值一定是111,所以我们可以跑 ...

  3. hdu区域赛在线热身赛 暨 第十二场组队赛

    题目编号:hdu 4257~4266 (对应比赛题号1001~1010) 这是我们第十二场组队赛,在今天中午进行. 比赛刚开始,依然是由我的队友读题.还没看几题,就发现了好多题judge时长高达20秒 ...

  4. 线段树——单点更新(二)

    HDU 4217 Data Structure? http://acm.hdu.edu.cn/showproblem.php?pid=4217 CZ做的一道题目,我帮忙看了看. 题意:给定N个数(1- ...

  5. HDU - 4305 - Lightning 生成树计数 + 叉积判断三点共线

    HDU - 4305 题意: 比较裸的一道生成树计数问题,构造Krichhoof矩阵,求解行列式即可.但是这道题还有一个限制,就是给定的坐标中,两点连线中不能有其他的点,否则这两点就不能连接.枚举点, ...

  6. 【HDU - 6187】Destroy Walls(思维,最大生成树)

    题干: Long times ago, there are beautiful historic walls in the city. These walls divide the city into ...

  7. 【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)

    题干: Clarke is a patient with multiple personality disorder. One day he turned into a learner of grap ...

  8. HDU 4786 生成树 并查集+极大极小值 黑白边 确定选择白边的数量

    题意: 给定一个无向图 n 个点 m条无向边 u v val val == 1 表示边(u, v) 为白边 问能否找到n个点的生成树, 使得白边数为斐波那契数 思路: 并查集求图是否连通( 是否存在生 ...

  9. 【HDU】5304 Eastest Magical Day Seep Group's Summer【环dp+生成树计数】

    传送门:[HDU]5304 Eastest Magical Day Seep Group's Summer my  code: my~~code: #include <bits/stdc++.h ...

最新文章

  1. Linux 内核的文件 Cache 管理机制介绍
  2. Todolist总结
  3. 关于pytorch中super的一点思考,结合代码
  4. python爬虫拉取豆瓣Top250数据
  5. Java 远程mapduce_java – 如何远程运行mapreduce作业
  6. 山师计算机学硕分数线,2020山东师范大学考研复试分数线已公布
  7. 搭建hadoop的HA集群模式(hadoop2.7.3+hive+spark)
  8. 《Business Rules Engine Overview》--《业务规则引擎概述》write by Mark Kamoski
  9. 华为机试HJ1:字符串最后一个单词的长度
  10. 在iOS项目中引入MVVM
  11. 一种基于annotation的Spring-mvc权限控制方法
  12. Python(十七):python的编程规范、PEP8
  13. 柔性电子综述2014:Wearable Electronics and Smart Textiles 可穿戴电子设备
  14. 如何自己开发漏洞扫描工具
  15. 学习电商美工设计毕业以后可以干什么
  16. AAC 音频数据结构实例分析:
  17. java 替换 ppt内容_Java 替换PPT文档中的文本和图片
  18. xcode6 下载地址
  19. Vue引用原生高德地图标注
  20. java byte与char互转原理_【转】java byte与char互转原理

热门文章

  1. java计算器的重点解决问题_java计算器问题
  2. c 应用程序多语言版本,c – 在win32 API应用程序中实现全球化/多语言功能
  3. 【spring】具名参数
  4. Angular应用中tsconfig.json文件配置说明及配置全局路径映射
  5. 微信小程序游戏开发文档以及开发工具地址
  6. 程序员笔记|如何编写优雅的Dockerfile
  7. java——慎用可变参数列表
  8. 拜托,面试别再问我时间复杂度了!!!
  9. Linux-LNMP(静态元素不记录日志和过期时间,防盗链,解析php,代理,支持ssl)
  10. 纸上原型设计 VS 桌面原型工具设计,你更喜欢谁?