首页 > 编程语言 > 详细

c++随机生成树

时间:2020-04-08 17:47:35      阅读:76      评论:0      收藏:0      [点我收藏+]

分析

当我们写完一道题,自认为它是正解,但是交上去却WA的时候,我们该怎么办呢

当我们已经想出了一道的暴力解法,又想出了一种比较优秀的解法,但不知道这种解法对错与否,我们该怎么办呢

答案显然是对拍

对于我们之前做过的题,可能对数据的要求并不是那么严格,所以一个rand()%a+b就可以解决问题

但是最近,我们学习了树形DP,很多题目上都要求给出的数据必须是严格的一棵树,这样的话,我们随机生成数据就有了难度

但是,练习我们之前学过的知识,我们可以用并查集解决这个问题

代码

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,cnt,fa[100015];
 4 int zhao(int xx){
 5   if(fa[xx]==xx) return xx;
 6   else return zhao(fa[xx]);
 7 }
 8 int main(){
 9     srand(time(0));
10     int n=rand()%10+2;
11     printf("%d\n",n);
12     for(int i=1;i<=n;i++){
13     fa[i]=i;
14   }
15     while(cnt<n-1){
16         int x=rand()%n+1,y=rand()%n+1;
17         int x1=zhao(x),y1=zhao(y);
18         if(x1!=y1){
19       fa[x1]=y1,cnt++;
20       printf("%d %d\n",x,y);
21     }
22     }
23     return 0;
24 }
View Code

 

c++随机生成树

原文:https://www.cnblogs.com/liuchanglc/p/12660132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!