我们需要构造一个二部图,每个图的n个顶点,在这两部分上,边的总数等于m。
左边的顶点从1到n编号。
右边的顶点也从1到n编号。
每个顶点的度数大于或等于X,小于或等于Y,即对于所有v,X≤deg(v)≤Y
给定四个整数n,m,x,y,我们需要构造满足这个性质的二部图。如果不存在任何这样的图形,那么也告诉相同的。
例子:
如果N=2,M=3,X=1,Y=2
那么二部图的3条边是:(1,1),(2,2)和(1,2)
如果n=2,m=3,x=1,y=1,则不存在二分图。
如果
1 ≤ N ≤ 100
1 ≤ X ≤ Y ≤ N
0 ≤ M ≤ N * N
原始问题link
最佳答案
显然,变量需要满足:
X * N <= M <= Y * N
否则,就没有解决办法。
找到边缘可以在波浪中完成。首先将第一个集合中的每个节点连接到第二个集合中相应的节点在下一个波中,将
i
与i
连接然后是i
和(i + 1) mod N
等等。这将使每个顶点的阶数在每个波中恰好增加一个每当你构建了i
边时就停止这也可能发生在波浪期间。