zoukankan      html  css  js  c++  java
  • c++随机生成树

    分析

    当我们写完一道题,自认为它是正解,但是交上去却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);
    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
    ",x,y);
    21     }
    22     }
    23     return 0;
    24 }
    View Code
  • 相关阅读:
    如何实现Iframe透明
    ListView(未完)
    我又回来了
    前言
    代码重用and思路重用
    图片上传
    千万数量级分页存储过程
    MSSQL中,将text,ntext转换为int型数据
    优秀的回复,来自圣殿骑士
    SqlDataSource控件
  • 原文地址:https://www.cnblogs.com/liuchanglc/p/12660132.html
Copyright © 2011-2022 走看看