//用到了Havel-Hakimi定理,判断是否能够构图
//两种情况不能构图,1:对剩下序列排序后,最大的度数超过了剩下的顶点数
// 2:对最大的度数后面的f个度数减-后,出现了负数
//记录到临街矩阵只需要每次排序后减-记录。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 20
struct node
{
int u,index;
} a[N];
int ma[N][N];
int cmp(const void *a,const void *b)
{
return (*(struct node *)b).u-(*(struct node *)a).u;
}
int main()
{
int t,n,i,j,flag,to,index;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i].u);
a[i].index=i+1;
}
flag=1;
memset(ma,0,sizeof(ma));
for(i=0; i<n&&flag; i++)
{
qsort(a+i,n-i,sizeof(a[0]),cmp);
to=a[i].u;
index=a[i].index;
if(to>n-i-1)flag=0;
for(j=i+1; j<n&&flag; j++)
{
if(to==0)break;
if(a[j].u<=0)flag=0;
a[j].u--;
to--;
ma[index][a[j].index]=ma[a[j].index][index]=1;
}
}
if(flag==0)
printf("NO\n");
else {
printf("YES\n");
for(i=1; i<=n; i++)
{
for(j=1; j<=n-1; j++)
printf("%d ",ma[i][j]);
printf("%d\n",ma[i][j]);
}
}
if(t)
printf("\n");
}
return 0;
}

poj 1659 判断是否能构成图Havel-Hakimi定理的更多相关文章

  1. POJ1659 Frogs' Neighborhood(Havel–Hakimi定理)

    题意 题目链接 \(T\)组数据,给出\(n\)个点的度数,问是否可以构造出一个简单图 Sol Havel–Hakimi定理: 给定一串有限多个非负整数组成的序列,是否存在一个简单图使得其度数列恰为这 ...

  2. POJ 1659 Frogs' Neighborhood(可图性判定—Havel-Hakimi定理)【超详解】

    Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 9897   Accepted: 41 ...

  3. poj 1659 Frogs&#39; Neighborhood 度序列可图化 贪心

    题意: 对一个无向图给出一个度序列,问他是否可简单图化. 分析: 依据Havel定理,直接贪心就可以. 代码: //poj 1659 //sep9 #include <iostream> ...

  4. POJ 1637 Sightseeing tour (混合图欧拉路判定)

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6986   Accepted: 2901 ...

  5. hdu 1272 判断所给的图是不是生成树 (并查集)

    判断所给的图是不是生成树,如果有环就不是,如果没环但连通分量大于1也不是 find函数 用递归写的话 会无限栈溢出 Orz要加上那一串 手动扩栈 Sample Input6 8 5 3 5 2 6 4 ...

  6. poj 1659 Frog's Neighborhood

    未名湖附近共有N个大小湖泊L1, L2, -, Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N).如果湖泊Li和Lj之间有水路相连,则青蛙Fi和Fj互称为邻居.现在已知每只 ...

  7. Frogs‘ Neighborhood(POJ 1659 C/C++)

    poj 1659 Description 未名湖附近共有N个大小湖泊L1, L2, ..., Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N).如果湖泊Li和Lj之间有水路 ...

  8. POJ 1659 Havel-Hakimi定理

    关于题意和Havel-Hakimi定理,可以看看http://blog.csdn.net/wangjian8006/article/details/7974845 讲得挺好的. 我就直接粘过来了 [ ...

  9. poj 1659 Frogs' Neighborhood (贪心 + 判断度数序列是否可图)

    Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 6076   Accepted: 26 ...

随机推荐

  1. 清北考前刷题day2早安

    /* 做法一:按h sort一遍,对于一段区间[i,j],高度花费就是h[j]-h[i] 然后枚举区间,把区间内C排序,一个一个尽量选即可. n^3logn 标算:n^3 dp 高度排序,保证从前往后 ...

  2. nginx+thinkPhp配置虚拟主机和伪静态规则重写

    /usr/local/nginx/conf/nginx.conf 进行配置 server    {        listen 80 default_server;        #listen [: ...

  3. JavaScript--DOM删除节点removeChild()

    删除节点removeChild() removeChild() 方法从子节点列表中删除某个节点.如删除成功,此方法可返回被删除的节点,如失败,则返回 NULL. 语法: nodeObject.remo ...

  4. uiautomatorviewer详解

    一,uiautomatorviewer是什么? Android 4.1发布的,uiautomator是用来做UI测试的.也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期.比如 登陆界 ...

  5. 【LeetCode】LeetCode Weekly Contest 16B

    2.一个游戏 YouTube MIT 算法课上有详细的讲解 思路是DP. 话说MIT OpenCourseWare 真心不错.应该好好看看,讲的详细生动. Tips: 1.当n是偶数的时候,首先的选择 ...

  6. elastic-job 的简单使用

    说明:这个是使用2.1.5版本 elastic-job是当当开源的的的定时任务,使用也是很简单的,可以解决数据量的大的时候可以分片执行,多应用节点部署时候不会重复执行. 是通过zookeeper作为控 ...

  7. Android 网络图片查看器与网页源码查看器

    在AndroidManifest.xml里面先添加访问网络的权限: <uses-permission android:name="android.permission.INTERNET ...

  8. Android基础TOP6_1:FrameLyayout和ImageView制作层叠图片

    Activity: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  9. JVM 参数含义

    JVM参数的含义 实例见实例分析 参数名称 含义 默认值   -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,J ...

  10. 浅谈IFC

    IFC布局规则: 在一个行内格式化上下文中,盒是一个接一个水平放置的,从包含块的顶部开始 这些盒之间的水平margin,border和padding都有效 盒可能以不同的方式竖直对齐:以它们的底部或者 ...