NOIP大纲整理:(六)字符串4:随机算法

本文介绍了几种随机图的生成算法,包括随机生成一棵树、长毛链、随机图及连通图的方法。通过这些算法可以生成不同类型的随机图用于算法测试和研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机算法

随机生成树

①随机生成一棵树:

for(int i=2;i<=n;i++)/*随机生成一棵树*/
{
    cout<<rand()%(i-1)+1<<' '<<i<<endl;
}//深度为lgn

②随机生成一棵长毛的链:

/*随机生成一棵长毛的链:1~n/2*/
for(int i=2;i<=n/2;i++) cout<<i-1<<''i<<endl;
for(int i=n/2+1;i<=n;i++) cout<<rand()%(i-1)+1<<''<<endl;

③给你一张图,生成一张图:

/*给你一张图,生成一张图,10万个点,20万条边 */
map<long long,int> mp;
for(int i=1;i<=200000;i++)
{
    int A=rand()%n+1;
    int B=rand()%n+1;
   while(A==B||mp[1ll*A*100005+B])
    {
        A=rand()%n+1;
        B=rand()%n+1;
    }
    mp[1ll*A*10005+B]=1;
    cout<<A<<''<<B<<endl;
}

④随机生成一个连通图: 

先生成一棵树,这棵树上的边是一定存在的,在随机其他的边。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值