Havel-Hakimi定理(判断是否可图序列)
Time Limit: 5000MS | Memory Limit: 10000K | |||
Total Submissions: 8315 | Accepted: 3522 | Special Judge |
Description
未名湖附近共有N个大小湖泊L1, L2, ..., Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N)。如果湖泊Li和Lj之间有水路相连,则青蛙Fi和Fj互称为邻居。现在已知每只青蛙的邻居数目x1, x2, ...,xn,请你给出每两个湖泊之间的相连关系。
Input
第一行是测试数据的组数T(0 ≤ T ≤ 20)。每组数据包括两行,第一行是整数N(2 < N < 10),第二行是N个整数,x1, x2,..., xn(0 ≤ xi ≤ N)。
Output
对输入的每组测试数据,如果不存在可能的相连关系,输出"NO"。否则输出"YES",并用N×N的矩阵表示湖泊间的相邻关系,即如果湖泊i与湖泊j之间有水路相连,则第i行的第j个数字为1,否则为0。每两个数字之间输出一个空格。如果存在多种可能,只需给出一种符合条件的情形。相邻两组测试数据之间输出一个空行。
Sample Input
3 7 4 3 1 5 4 2 1 6 4 3 1 4 2 0 6 2 3 1 1 2 1
Sample Output
YES 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 NOYES 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0
Source
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{int pos,x;
}c[15];//pos表示顶点坐标,x表示顶点的度
bool cmp(node a,node b)
{return a.x>b.x;
}
int main()
{int ncase,n,edge[15][15];//edge是否存在合理的相邻关系scanf("%d",&ncase);while(ncase--){int flag=0;memset(edge,0,sizeof(edge));memset(&c,0,sizeof(&c));scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&c[i].x);c[i].pos=i;if(c[i].x>=n)flag=1;}if(flag){printf("NO\n");continue;}int first_pos,first_x;for(int i=0;i<n;i++){sort(c+i,c+n,cmp);//排序。c+i,c+n分别是数组开始,结束地址first_x=c[i].x;first_pos=c[i].pos;for(int k=1;k<=first_x&&!flag;k++){int j=c[i+k].pos;if(c[i+k].x<=0) flag=1;c[i+k].x--;edge[j][first_pos]=edge[first_pos][j]=1;}}if(!flag){printf("YES\n");for(int i=0;i<n;i++){printf("%d",edge[i][0]);for(int j=1;j<n;j++)printf(" %d",edge[i][j]);printf("\n");}}elseprintf("NO\n"); printf("\n");}return 0;
}
Havel-Hakimi定理(判断是否可图序列)相关推荐
- Havel—Hakimi定理(度序列)
对于图的所有顶点,我们可以统计出每个顶点的度.像这样的一串数字,我们称之为:度序列.那么反过来,给定一个序列,能否判断这个序列是可图的呢?这里有一个定理:Havel-Hakimi定理可以用来判定一个序 ...
- Havel–Hakimi算法学习笔记(哈维尔算法)详细【Python】
问题 来源离散数学的图论中 第一个接触到的算法:Havel–Hakimi算法 (哈维尔算法) 判断一个非负序列是否为某无向简单图的度数列的方法(Pyhton代码) 前提提要 1.无向简单图 首先先了解 ...
- 费尔马小定理素数java_利用费马小定理判断素数
今天听了ljss神犇的数论课,顿时感觉----我真的是太弱啦! 我只能稍微写一下我能听懂的部分orz 那么这就是今天我为数不多能听懂一点的之一......QAQ 首先先介绍今天的主角:费马小定理 -- ...
- 罗尔定理与零点定理判断实际应用与判断
在最后一大题中常常会出现一些让我们证明等式成立的题目,在这呢,我也碰到了几道另我眼前一亮的证明题,题目对我来说,又是一种方法和思路,在这呢进行汇总方便日后复习与回顾. 目录 首先来吧!第一题! 第一题 ...
- Havel-Hakimi定理(判断一个度序列是否可图)
1,Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的. 2,首先介绍一下度序列:若把图 G 所有顶点的度数排成一个序列 S,则称 S 为图 G 的度序列. 3,一个非负整数组成的有限 ...
- 【图论】已知度数列情况下的简单无向图的判断方法
感谢评论区大佬@goodloveyourlove补充的判断度数列是否能构成无向树的方法与例子. 关于度数列是否能构成无向树的判断方法可以移步至评论区. ======================== ...
- POJ1659 Frogs' Neighborhood(Havel定理)
题目: Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 9932 Accepted ...
- Codeforces 1091E New Year and the Acquaintance Estimation Erdős–Gallai定理
题目链接:E - New Year and the Acquaintance Estimation 题解参考: Havel–Hakimi algorithm 和 Erdős–Gallai theore ...
- 图的可视化问题、havel-hakimi算法、Erdős–Gallai定理
图的可视化问题.havel-hakimi算法.Erdős–Gallai定理 简单无向图的可视化问题: 给定一个度数序列D={a1......an},a⊂Z+,aiD=\{a_1......a_n\}, ...
最新文章
- C#连接oracle的方式以及问题解决.
- func_num_args()
- 102. 最佳牛围栏【二分 / 思维 不错】
- ECSTORE 关于FILTER条件所代表的含义
- 人工智能过于发达可能将后患无穷
- python实现概率分布
- RHEL7安装ZABBIX 3.2
- elasticsearch集群搭建实例
- android button 图片不缩放,ImageButton如何让图片按比例缩放不被拉伸
- 运动目标跟踪(十九)--TLD
- A1075[PAT JUDGE] 好题
- 最详细的SAI笔刷设置教程,非常全面详细!
- 【娜家花园养花小记】
- docker部署springboot父子级项目+mysql+redis菜鸟教程
- 计算机鼠标左键的主要应用,鼠标的应用
- C语言——数组定义及使用
- 站内搜索引擎(ASP.NET)
- excel提取单元格内特定字符(字/词)前(后)的内容
- 商标注册流程,山东商标注册去哪好
- 古龙108将,喜欢古龙的来看啦