给校队选拔赛出了道DAG上的背包问题,需要生成DAG数据。

最开始使用的方法是先随机生成再判环,如果有环就重新生成。这种方法得到DAG的概率随着点数和边数的增加而急速降低,为了一个DAG要生成很多次,等很长时间。然后觉得这样的方法很stupid。。。

听了好甜给的先生成拓扑序的构造方法,这样可以保证生成的图里面没有环。

首先随机生成一个 1 到N 的permutation。这个permutation就是DAG的拓扑序,然后每次随机从前往后连边,这样就可以保证生成的是一个DAG了。真心膜拜

Life is short ,Use Python

from random import shuffle as sl
from random import randint as rd def gn():
num = rd(1,1000)
return num
def w2f(f,num,fg):
f.write(str(num))
if fg==True:
f.write('\n')
else:
f.write(' ') def DataMake(c):
MAXL =100000;
f = open('data'+str(c)+'.in','w')
n = 1000
node = range(1,n+1)
sl(node)
sl(node)
m = rd(1,min(n*n,5000))
w2f(f,n,0);w2f(f,m,1)
for i in range(0,m):
p1 = rd (1,n-1)
p2 = rd (p1+1,n)
x = node[p1-1]
y = node[p2-1]
l = rd(1,MAXL)
w = gn()
w2f(f,x,0);w2f(f,y,0);w2f(f,l,0);w2f(f,w,1)
k = gn()
w2f(f,k,1)
for i in range(0,k):
w2f(f,gn(),1)
print n,' node',m,' edges',k,'Queries'
f.close() DataMake(1)
print 'Done'

最新文章

  1. 1. web前端开发分享-css,js入门篇
  2. 图像映射map
  3. 软件代码生成之Codesmith模板.netTiers
  4. Burpsuite之Http Basic认证爆破
  5. CentOS7+JDK8编译Hadoop2.6.4
  6. javascript:history.go(-1);
  7. Windows系统中IIS 6.0+Tomcat服务器环境的整合配置过程
  8. Apache配置HTTPS协议搭载SSl配置全过程
  9. rsyslog 读日志文件 ,当rsyslog 中断时,也会丢数据
  10. PROTEL99生成GERBER的操作说明
  11. java 获取系统变量(环境变量和环境变量)
  12. 解决mysql 1032 主从错误
  13. 微信小程序-滚动消息通知
  14. C语言第一周作业
  15. 关于python爬虫经常要用到的一些Re.正则表达式
  16. Viavdo&ISE&Quartus II级联Modelsim级联仿真
  17. Nginx反向代理配置教程(php-fpm)
  18. jQuery位置操作
  19. Linux 创建用户并赋予 Sudo 权限
  20. Visual Studio性能计数器,负载测试结果分析- Part III

热门文章

  1. NDEF-NFC数据交换格式
  2. BMP彩色转成黑色二值图
  3. 链表k个节点反向
  4. [Leetcode][Python]51: N-Queens
  5. error C2065: 'assert' : undeclared identifier
  6. 创立Est•Design华服高级成衣定制工作室 - 北京服装学院-莱佛士国际学院
  7. zlog
  8. Lining Up(在一条直线上的最大点数目,暴力)
  9. Win32K里的死循环
  10. HTML——JavaScript简介