poj-1659-Frogs Neighborhood-(图论-是否可图)
poj-1659-Frogs Neighborhood-(图论-是否可图)
Time Limit: 5000MS | Memory Limit: 10000K | |||
Total Submissions: 10018 | Accepted: 4189 | 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
1659 | Accepted | 432K | 0MS | G++ | 1055B | 2017-09-16 10:13:08 |
在看图论的知识,一个序列是否可图。
可图: 一个非负整数的序列如果可以成为某个无向图的度序列,则该序列是可图的。
具体的算法思路和code来自--
参考来自:http://blog.csdn.net/makenothing/article/details/41308903
#include <cstdio>
#include <cstdlib>
#include <cstring> const int MAXN = 12; struct Node{int d, p;
};Node nd[MAXN];
int mp[MAXN][MAXN]; int cmp(const void *a, const void *b){Node* aa = (Node *)a; Node* bb = (Node *)b; return (bb->d - aa->d);
}int main(){freopen("in.txt", "r", stdin); int TC, n; scanf("%d", &TC); while(TC--){scanf("%d", &n); for(int i=0; i<n; ++i){scanf("%d", &nd[i].d); nd[i].p = i; }bool flag = true; memset(mp, 0, sizeof(mp)); for(int i=0; i<n; ++i){qsort(nd + i, n - i, sizeof(nd[0]), cmp); if(nd[i].d + i >= n){flag = false; }if(!flag){ break; } for(int j=i+1; j<=i+nd[i].d; ++j){--nd[j].d; if(nd[j].d < 0){flag = false; break; }mp[ nd[i].p ][ nd[j].p ] = mp[ nd[j].p ][ nd[i].p ] = 1; }}if(flag){printf("YES\n");for(int i=0; i<n; ++i){for(int j=0; j<n-1; ++j){printf("%d ", mp[i][j] );}printf("%d\n", mp[i][n-1] );}}else{printf("NO\n");}if(TC != 0){printf("\n");}}return 0;
}
转载于:https://www.cnblogs.com/zhang-yd/p/7530426.html
poj-1659-Frogs Neighborhood-(图论-是否可图)相关推荐
- POJ 1659 Frogs‘ Neighborhood (Havel 定理)
Havel 定理: 序列的可图:给出一个 由非负整数组成的序列,如果是某个无向图的度序列,则称该序列是可图的. 而 Havel 定理,就是判断序列的可图的方法.先按度数从大到小排序, 每次处理完度数一 ...
- POJ 1659 Frogs#39; Neighborhood(度序列组成)
意甲冠军 中国 依据Havel-Hakimi定理构图即可咯 先把顶点按度数从大到小排序 可图的话 度数大的顶点与它后面的度数个顶点相连肯定是满足的 出现了-1就说明不可图了 #include ...
- POJ1659 Frogs' Neighborhood(Havel定理)
题目: Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 9932 Accepted ...
- POJ 1659【Havel-Hakimi 定理】
Havel-Hakimi 定理: 一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的. 例如,判断序列s: 7, 7, 4, 3, 3, 3, 2, 1 是否是可图的. 删除序列s ...
- 【图论——第一讲】图论基础以及图的储存
ฅ(๑˙o˙๑)ฅ 大家好, 欢迎大家光临我的博客:面向阿尼亚学习算法学习笔记系列持续更新中~ 文章目录 一.前言 推荐大家一个图形编译器[很好用](https://csacademy.com/app ...
- POJ - Frogs' Neighborhood(Havel-Hakimi)
题目链接:http://poj.org/problem?id=1659 Time Limit: 5000MS Memory Limit: 10000K Description 未名湖附近共有N个大 ...
- poj 1659 Havel-hakimi定理
题目链接 http://poj.org/problem?id=1659 题意 已知所有顶点的入度,现在问这些顶点是否能构成一张图,如果可以,输出它的邻接矩阵. 题解 Havel-hakimi定理是一个 ...
- 【图论专题】图的存储与遍历(最小环、所有环的大小)
整理的算法模板合集: ACM模板 目录 Part 8.1 图的存储与遍历 P2661 信息传递(最小环) P2921 Trick or Treat on the Farm(求所有环的大小) 题单链接: ...
- 【数据结构与算法】图论基础与图存储结构
前言 由于后续更新好几篇文章都涉及到 图 这种数据结构,因此打算先普及一下 图 的相关理论支持,如果后面的相关内容有些点不太容易理解,可以查阅此篇文章.本文不建议一口气阅读完毕,可以先浏览一遍,在后续 ...
- POJ 2987 Firing(最大权闭合图)
[题目链接] http://poj.org/problem?id=2987 [题目大意] 为了使得公司效率最高,因此需要进行裁员, 裁去不同的人员有不同的效率提升效果,当然也有可能是负的效果, 如果裁 ...
最新文章
- Ajax-简单的HelloWorld实例,使用了XMLHttpRequest(two)
- 嵌入式c语言检测键盘,【精华整理】C语言嵌入式系统编程修炼--键盘操作篇
- 我的Android进阶之旅------Android中高低API版本兼容使用@TargetApi或者@SuppressLint(NewApi)...
- 剑指offer——最小的K个数和数组中第K大的元素
- Spring 3.1配置文件和Tomcat配置
- Facebook 开源图像处理库 Spectrum,优化移动端图像生成
- python控制语句字符串截取_菜鸟python---流程控制语句
- [置顶] “非主流”Web容器之TomJetty之让服务动起来
- 带本信息论看《三体》——信息论课程论文
- n-3000系列串口服务器,串口转网络,网络转串口
- 【双清/双wipe】使用adb命令进行双清/双wipe
- 关于.Net的面试遐想
- 百度网盘html资源,百度网盘目录索引搭建教程:如何把百度网盘文件做成在线html目录...
- 经验:如何快速地写出格雷码
- 80行代码自己动手写一个表格拆分与合并小工具(文末附工具下载)
- WebServerException: Unable to start embedded Tomcat
- 动词变名词的变化规则_动词变职业名词的规则
- 数据类型与堆栈内存练习数据类型检测
- 关于DBeaver stored procedure中print语句的内容看不见,smss可以的问题
- 关于 android 虚拟机显示在了界面里面,怎么把模拟器放到到android studio窗口外面这件事