博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4263(有限制的生成树)
阅读量:5092 次
发布时间:2019-06-13

本文共 1399 字,大约阅读时间需要 4 分钟。

题目链接:

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

1 #include
2 #include
3 #include
4 #include
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
=(n-1-ansr)&&k<=ansb){59 puts("1");60 }else61 puts("0");62 }63 return 0;64 }
View Code

 

转载于:https://www.cnblogs.com/wally/archive/2013/06/10/3130869.html

你可能感兴趣的文章
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>