这是一道交互题
定义二分图为一种可以将点集
你也可以选择百度来帮助理解二分图的定义。
定义二分图的一个
定义在二分图的一种
定义在二分图的一种
定义二分图的一种
题目描述
给定一个
其中点的编号为
初始时候二分图内没有任何一条边,也就是
你需要动态支持向图中加边,删边。
同时求出任意一个不均匀度最小的
注意,在本题中
任务介绍
你需要实现两个函数Init
和Modify
。
Init(n,k,Q)
n,k
含义见题目描述。Q
为操作的个数。- 你不需要返回任何值。
在每个测试点中,交互库都会调用恰好一次Init
函数。
Modify(x,y)
x,y
是两个 的数。- 该函数改变连接
集合中第 个点到 集合中第 个点的边的存在性。 - 你需要返回在改变存在性之后的任意一种
划分方案。
在每个测试点中,交互库都会调用恰好Modify
函数。
由于检验时间非常大,实际测评时候SPJ仅仅会纯随机检测
由于某些特殊原因,下发SPJ不支持随机检测。
实现方法
本题只支持C++
。
源代码中需要包含头文件graph.h
。
你需要实现的函数的相关接口:
void Init(int n,int k,int Q);
Division Modify(int x,int y);
其中division
定义如下
struct Division{int color[22][22];};
其中
对于不存在那一条边,则该元素值必须为0.
如何测试你的程序
你需要在本题目录下使用如下命令编译得到可执行程序:
g++ -o graph grader.cpp graph.cpp -O2
可执行文件将从标准输入读取以下格式的数据:
第一行包含一个正整数
第二行一共三个正整数,
读入完成之后,交互库将会调用Init
函数。
接下来
每一行读入完成之后,交互库会调用Modify
函数
交互库将会在标准输出中输出以下信息:
每一次调用完Modify
函数后,交互库都会输出一行形如Count: cnt
的输出,其中cnt为你的方案的不平均度。
* 如果你给出的方案不合法的话cnt会等于 -1。
注意最终测评时使用的
样例源代码
在本题目录下,有C++语言的样例源代码graph.cpp。按照上文中提到的方式进行编译,即能通过编译得到可执行程序。
样例源代码只是帮助理解题目,结果一定不正确。
限制与约定
测试点编号 | |||
---|---|---|---|
对于所有数据,满足
时间限制:
空间限制:
题目中所给的时间、空间限制为你的代码和交互库加起来可以使用的时间和空间。我们保证,对于任何合法的数据,任何版本的交互库(包括下发给选手的和最终评测使用的),在检验次数不超过50000次的情况下,在OJ上运行所用的时间不会超过0.5s,运行所用的空间不会超过12MB,也就是说,选手实际可用的时间至少为0.5s,实际可用的空间至少为500MB。