hdu 4263(有限制的生成树)
来源:互联网 发布:热血传奇闪避命中数据 编辑:程序博客网 时间:2024/05/19 16:37
题目链接: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 }else61 puts("0");62 }63 return 0;64 }
0 0
- hdu 4263(有限制的生成树)
- HDU 1875 畅通工程再续 有限制的最小生成树
- HDU 4616 Game 【有限制的树型dp】
- hdu——4341(有限制条件的dp)
- hdu 2546 饭卡(有小小限制的 01背包)
- hdu 4179(有限制的最短路)
- HDU 3070 有度限制的生成树的个数
- POJ 1639 Picnic Planning(有限制的最小生成树)
- 有限制条件的深度优先遍历生成全排列
- mysql函数之自动生成有限制的行号 。
- 背包(5)Hdu 1561 The more, The Better(有限制的背包,分组背包)
- hdu 5188 zhx and contest(有限制的01背包问题)
- HDU - 3033 I love sneakers!(有限制的背包)
- hdu 4009(最小有向生成树)
- HDU 5188 zhx and contest(有限制01背包)
- HDU5188(有限制的01背包)
- POJ1062(有限制的最短路)
- 有限制的dfs
- hdu 2144(LCS+并查集)
- hdu 1558(线段相交+并查集)
- 使用OTR进行加密聊天(适用于Gtalk、Facebook聊天室)
- hdu 3047(带权并查集)
- hdu 2818(带权并查集)
- hdu 4263(有限制的生成树)
- hdu 4253(二分+最小生成树)
- hdu 4424
- 并查集小结
- hdu 2065(递推+矩阵乘法)
- hdu 4179(有限制的最短路)
- MVC访问Oracle数据库示例
- hdu 3360(最小覆盖)
- hdu 3118(二进制枚举)