Skip to content

图和树 Graph and tree

luosw edited this page Feb 4, 2021 · 6 revisions

图和树 Graph and tree

CarYon 支持建立图的功能。关于图生成测试样例的例子请查看 example 文件夹中的 Luogu P3366 文件夹,是P3366(最小生成树)的数据生成例子。

建立一个图

可以通过下面的命令建立一个图:

template<typename T>    //这一行不用写
graph<T> example;

这就生成了一个边权类型为 T 的图了。

加入边

加入边到已经生成的图中,需要:

example.addedge(/*start*/,/*end*/,cyrand(/*min*/,/*max*/))

制作随机图

rand_graph(n,m,min,max,cyrand);

可以返回一张 n m 边边权在 minmax 之间的一张随机图。

如果要把这生成的图赋值,直接:

example=rand_graph(n,m,min,max,cyrand);

将图写入输入文件

仅需使用函数 ingraph,例如:

graph<int> a;
a=rand_graph(n,m,min,max,cyrand);
ingraph(a);

graph 类成员函数

下面介绍一些有用的函数:

example.is_connect();

这个函数返回一个布尔类型的值,代表图是否联通。

example = rand_dag(n,m,min,max,cyrand);

返回一个有向无环图。

example = rand_tree(n,k,min,max,cyrand);

返回一个 n 个点的 k 叉树。

example = connect_graph(n,m,min,max,cyrand);

制作一个随机连通图。

Clone this wiki locally