度序列(Havel-Hakimi定理)

Problem Description若把图G所有顶点的度数排成一个序列s,则称s为图G的度序列.例如一个无向图非递减度序列为                                                                     s:5,4,3,3,2,1如果一个非负数整数组成的有限序列是某个无向图的度序列,则称该序列是可图的.现在,判定一个序列是否可
摘要由CSDN通过智能技术生成

Problem Description

若把图G所有顶点的度数排成一个序列s,则称s为图G的度序列.例如一个无向图非递减度序列为
                                                                     s:5,4,3,3,2,1
如果一个非负数整数组成的有限序列是某个无向图的度序列,则称该序列是可图的.现在,判定一个序列是否可图.

Input

输入数据有多组,第一行输入一个t(t<100),表示有t组测试数据,每组测试数据有一个n(n<30),接下来是n个整数,x1,x2,x3...xn(0<=xi<=n).

Output

对输入的每组测试数据,如果该序列是可图的,则输出yes,否则输出no.

Sample Input

3
6
5 4 3 3 2 1
7
4 3 1 5 4 2 1
6
4 3 1 4 2 0

Sample Output

yes
yes
no

 

来自OJ:http://acm.fjzs.edu.cn/Problem/show/id/1019.htm

解题思路:

1.对数组进行降序排序 
2.然后删除第一个数a[0],并判断
一、该数a[0]是否大于后面的顶点数(即总个数n-1[表示剩余个数]) 【if no则不可图】;
二、对该数后面a[0]个数进行减1,并判断最后一个减1的数是否小于0【if no则不可图】;
3.重复上述操作1和2,直到全部数据为0。【if yes 则可图】

(详细过程推荐看:http://sbp810050504.blog.51cto.com/2799422/883904


代码如下(C++):

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;

bool 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值