题意:问生成树里能不能有符合菲波那切数的白边数量
思路:白边 黑边各优先排序求最小生成树,并统计白边在两种情况下数目,最后判断这个区间就可以。注意最初不连通就不行。
1 #include2 #include 3 #include 4 #include 5 #define LL long long 6 using namespace std; 7 int t,n,m; 8 int tot; 9 int F[100010];10 struct node {11 int u,v,c;12 } edge[100010];13 int f[100010];14 void init() {15 f[0]=1;16 f[1]=1;17 tot=1;18 while(f[tot]<=100010) {19 f[tot+1]=f[tot]+f[tot-1];20 tot++;21 }22 }23 24 int findd(int x) {25 if(F[x]==-1) return x;26 else return F[x]=findd(F[x]);27 }28 bool cmp1(node a,node b) {29 return a.c b.c;33 }34 int main() {35 scanf("%d",&t);36 int cas=0;37 init();38 while(t--) {39 scanf("%d%d",&n,&m);40 cas++;41 for(int i=0; i = low && f[i] <= high)84 flag = true;85 if(flag)86 printf("Case #%d: Yes\n",cas);87 else printf("Case #%d: No\n",cas);88 89 }90 return 0;91 }