题意: 给你一个数列, 判断是否可以构成一个图, 可以则输出 构成图的一种方式

构图根据 Havel-Hakimi定理来构图

(在排序的时候注意 节点下标会变化, 故用结构体)

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 50;
int Map[maxn][maxn];
struct Node
{
int val, pos;
bool operator < (const Node a) const
{
return val > a.val;
}
}Num[maxn];
int main()
{
int T, N;
cin >> T;
while(T--)
{
bool Jug = true;
cin >> N;
memset(Map,0,sizeof(Map));
for(int i = 0; i < N; ++i)
{
cin >> Num[i].val;
Num[i].pos = i;
} for(int i = 0; i < N && Jug; ++i)
{
sort(Num+i,Num+N);
/////////////
/*for(int k = 0; k < N; ++k)
{
if(k) cout << " ";
cout << Num[k].val;
}
cout << endl;*/
//////////////
int Be = Num[i].pos;
if(Num[i].val > N-i-1) Jug = false;
for(int j = 1; j <= Num[i].val && Jug; ++j)
{
int Ed = Num[i+j].pos;
Num[i+j].val--;
if(Num[i+j].val < 0) Jug = false;
else Map[Be][Ed] = Map[Ed][Be] = 1;
}
}
if(!Jug) {
puts("NO\n");
continue;
}
puts("YES");
for(int i = 0; i < N; ++i)
{
for(int j = 0; j < N; ++j)
{
if(j) cout << " ";
cout << Map[i][j];
}
cout << endl;
}
cout << endl;
}
return 0;
}

POJ 1659的更多相关文章

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

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

  2. poj 1659 Frog's Neighborhood

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

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

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

  4. poj 1659 Frogs' Neighborhood (DFS)

    http://poj.org/problem?id=1659 Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total S ...

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

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

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

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

  7. poj 1659(havel算法)

    题目链接:http://poj.org/problem?id=1659 思路:  havel算法的应用: (1)对序列从大到小进行排序. (2)设最大的度数为 t ,把最大的度数置0,然后把最大度数后 ...

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

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

  9. Poj 1659.Frogs' Neighborhood 题解

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

  10. POJ 1659 Frogs' Neighborhood(Havel-Hakimi定理)

    题目链接: 传送门 Frogs' Neighborhood Time Limit: 5000MS     Memory Limit: 10000K Description 未名湖附近共有N个大小湖泊L ...

随机推荐

  1. Centos配置ARP和Tomcat Native

    Tomcat Native是用于Tomcat的一个可选组件,能够允许Tomcat使用一定的本地资源.性能.兼容性. 具体来说,Tomcat Native给了Tomcat访问 Apache Portab ...

  2. 属性集合java.util.Properties

    属性集合java.util.Properties java.util.Properties集合 extends Hashtable<k, v> implements Map<k, v ...

  3. docker 系列 - Docker 安装和Hub Mirror地址设置

    ======================为什么要使用Docker?======================= 容器真是个好东西, (1)容器能提供隔离性; (2)容器能打包环境, 简化部署难度 ...

  4. Postman 安装及使用入门教程 (谷歌浏览器插件版)

    postman 在 谷歌浏览器中插件版 http://www.cnblogs.com/mafly/p/postman.html Postman 4.1.2 下载地址: http://files.cnb ...

  5. Java入门系列Java NIO

    jdk1.4中新加入的NIO,引入了通道与缓冲区的IO方式,它可以调用Native方法直接分配堆外内存,这个堆外内存就是本机内存,不会影响到堆内存的大小.

  6. Chrome 浏览器快捷键

    Ø  前言 记录下 Chrome 的快捷键,原文链接:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html   1.   标 ...

  7. Coding语言强弱类型且动静态类型简单解析。附图解

    话不多说,上图: (以下均以Java来说明) 对于语言的强弱类型: 1.强类型语言:通俗的点来讲,就是对于数据类型,如果开发者定义了一个int数据类型的变量,那么虚拟机就会特别坚定该变量为int,坚决 ...

  8. Hbase使用MapReduce编程导出数据到HDFS

    废话少说,直接上代码! package cn.com.oozie.demo;  import java.io.IOException;  import org.apache.hadoop.conf.C ...

  9. python 的基础学习 第九天 文件的操作

    1,文件操作 参数:1,文件路径  2,编码方式,3,执行动作(打开方式),只读,只写,,读写,追加和读写. 1  打开文件,得到文件句柄并赋值给一个变量.2. 通过句柄对文件进行操作.3. 关闭文件 ...

  10. L3-1 二叉搜索树的结构 (30 分)

    讲解的很不错的链接:https://blog.csdn.net/chudongfang2015/article/details/79446477#commentBox 题目链接:https://pin ...