题目链接:
http://poj.org/problem?id=1659
解题思路:
题目有两个要求,1是判断给定这些点的度数,问这些点是否可图;
2是需要输出这些点与点之间的关系。
这个两个问题是可以一起解决的。
首先我们可以将每个点的度数是可以计算出来的,按照度数将所有的点排序之后。
从度数最大的点开始,我们可以将其度数分配给比它度数小的一些点。
比如:
节点编号:2 3 4 1 5
节点度数:4 4 2 2 2
那么我们可以将节点2的度数分配给节点:3 4 1 5,每个点分配一个度数。
那么这几个点的度数都需要减1,2号节点的度数变为0,并且2号节点我们不需要再管它了。
就这样一直更新下去,每次更新之后都需要对点进行排序,直到最后所有点的度数都为0,那么这些点是可图的。
同时在做的过程当中,我们也能确定哪些边是相连的。
源代码:
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
#include<vector>
#include<set>
#include&