题目链接

http://poj.org/problem?id=1659

题意

已知所有顶点的入度,现在问这些顶点是否能构成一张图,如果可以,输出它的邻接矩阵。

题解

Havel-hakimi定理是一个判断入度是否能形成图的定理,这个博客讲解的较好:
https://blog.csdn.net/shuangde800/article/details/7857246
此题除了判断外,还要输出任意一个满足条件的邻接矩阵。这也不难做到,因为在Havel-hakimi定理判断的同时,可以标记邻接矩阵。

代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <cmath>
using namespace std;#define INIT(x) memset(x,0,sizeof(x))
#define eps 1e-8
#define next next_
typedef long long ll;
typedef unsigned long long ull;
const int INF = 0x7fffffff;
const int inf = 0x3f3f3f3f;
const int maxn = 200005;
const int N = 15;inline void read(int &x) {int f=1;x=0;char s=getchar();while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}x*=f;
}int t,n,a[N][N];
struct node{int id,num;bool operator<(const node &b)const{return num>b.num;}
}d[N];bool check() {for(int i=0;i<n;i++) {sort(d+i,d+n);int temp = d[i].num;for(int j=0;j<d[i].num;j++) {int k = d[i].id, k2 = d[i+j+1].id;a[k][k2] = a[k2][k] = 1;d[i+j+1].num--;if(d[i+j+1].num<0) return false;}}        return true;
}int main() {read(t);while(t--) {INIT(a);read(n);for(int i=0;i<n;i++) {read(d[i].num);d[i].id = i;}if(!check()) {cout<<"NO"<<endl;}else {cout<<"YES"<<endl;for(int i=0;i<n;i++) {for(int j=0;j<n;j++)cout<<a[i][j]<<" ";puts("");}}puts("");}return 0;
}

poj 1659 Havel-hakimi定理相关推荐

  1. Havel—Hakimi定理(度序列)

    对于图的所有顶点,我们可以统计出每个顶点的度.像这样的一串数字,我们称之为:度序列.那么反过来,给定一个序列,能否判断这个序列是可图的呢?这里有一个定理:Havel-Hakimi定理可以用来判定一个序 ...

  2. POJ 1659【Havel-Hakimi 定理】

    Havel-Hakimi 定理: 一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的. 例如,判断序列s: 7, 7, 4, 3, 3, 3, 2, 1 是否是可图的. 删除序列s ...

  3. Havel–Hakimi算法学习笔记(哈维尔算法)详细【Python】

    问题 来源离散数学的图论中 第一个接触到的算法:Havel–Hakimi算法 (哈维尔算法) 判断一个非负序列是否为某无向简单图的度数列的方法(Pyhton代码) 前提提要 1.无向简单图 首先先了解 ...

  4. POJ 1265 Area(Pick定理)

    POJ 1265 Area(Pick定理) 根据pick定理来做 皮克定理是指一个计算点阵中顶点在格点上的多边形面积公式该公式可以表示为 2S=2a+b−2 其中a表示多边形内部的点数,b表示多边形边 ...

  5. POJ 1659 Frogs‘ Neighborhood (Havel 定理)

    Havel 定理: 序列的可图:给出一个 由非负整数组成的序列,如果是某个无向图的度序列,则称该序列是可图的. 而 Havel 定理,就是判断序列的可图的方法.先按度数从大到小排序, 每次处理完度数一 ...

  6. poj 1265 Area(pick 定理)

    链接:poj 1265 题意:从原点出发.给出一些dx,dy移动增量,终于形成一个多边形, 求多边形内部的格点数目,边上的格点数目 .以及面积. 补充知识: 1.以格子点为顶点的线段.覆盖的点的个数为 ...

  7. POJ 1659 Frogs#39; Neighborhood(度序列组成)

    意甲冠军  中国 依据Havel-Hakimi定理构图即可咯  先把顶点按度数从大到小排序  可图的话  度数大的顶点与它后面的度数个顶点相连肯定是满足的  出现了-1就说明不可图了 #include ...

  8. POJ 1265-Area(计算几何+皮克定理+多边形面积公式)

    题目地址:POJ 1265 题意:给定一个格点多边形,求出内部点数in,边上点数on,和面积S. 思路:运用的定理很多. 1.皮克定理:S=in+on/2-1,即in=(2*S+2-on)/2. 2. ...

  9. POJ 2954-Triangle(计算几何+皮克定理)

    题目地址:POJ 2954 题意:给出三角形的三个顶点,求内部格点的个数. 思路:形同POJ 1265. #include <stdio.h> #include <math.h> ...

最新文章

  1. 深入python3 (Dive Into Python 3) 在线阅读与下载
  2. 设计模式(创建型模式)——单例模式(Singleton)
  3. PHP调试的时候遇到Warning: session_start() [function.session-
  4. 人工神经网络_制作属于自己的人工神经网络
  5. Android之数据库操作
  6. 使用js简单实现javaMap
  7. Github | 微软-计算机视觉最佳实践、代码示例和相关文档
  8. Keras TensorFlow 混编中 trainable=False设置无效
  9. java 反射 动态编译_动态编译java源代码和反射调用问题
  10. linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
  11. TFN系列超声波探伤仪为什么在众多品牌竞争中脱颖而出
  12. 微信小程序——“茶点错过你“奶茶店
  13. Python 01--介绍、基本语法、流程控制
  14. iText7添加页眉、页脚
  15. 高数 | 开 闭区间上连续函数的性质及证明
  16. python fun函数、求4x4整型数组的主对角线元素的和_C语言编程求一个4x4数组左下三角 包括主对角线元素的和...
  17. 2022-07-31 零基础吉他入门知识
  18. nexus安装与使用
  19. 通过展频降低系统EMI
  20. 性能提升三倍!优酷Node.js重构之路

热门文章

  1. ROS系统MoveIt玩转双臂机器人系列(一)--ROS机器人建模
  2. ImageNet Large Scale Visual Recognition Competition (ILSVRC)-ImageNet数据集标签名称中英文对照
  3. Android怎样绕开Camera打开手电筒的LED
  4. C语言 现成的创建与终止
  5. 北斗星历星钟性能总结
  6. java获取usb设备的相关信息
  7. uniapp小程序使用getUserProfile登录(获取昵称统一为‘微信用户’+头像为灰色头像)
  8. neso n810 i7 android 4.4,NESO N810 i7平板电脑京东首发 预售超100000
  9. 《Multi-Scale Residual Learning-using a Cycle Spinning CNN for Single Image De-Raining》
  10. 三星官方smdkv210 uboot移植到我的s5pv210开发板