`
Coco_young
  • 浏览: 130586 次
  • 性别: Icon_minigender_1
  • 来自: 湖南长沙
社区版块
存档分类
最新评论

[贪心]poj 1659 Frogs' Neighborhood

 
阅读更多

Frogs' Neighborhood

Time Limit : 10000/5000ms (Java/Other)Memory Limit : 20000/10000K (Java/Other)
Total Submission(s) : 5Accepted Submission(s) : 1
Special Judge
Problem Description

未名湖附近共有N个大小湖泊L1, L2, ..., Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤iN)。如果湖泊LiLj之间有水路相连,则青蛙FiFj互称为邻居。现在已知每只青蛙的邻居数目x1,x2, ...,xn,请你给出每两个湖泊之间的相连关系。


Input

第一行是测试数据的组数T(0 ≤ T ≤ 20)。每组数据包括两行,第一行是整数N(2 < N < 10),第二行是N个整数,x1,x2,...,xn(0 ≤xiN)。


Output

对输入的每组测试数据,如果不存在可能的相连关系,输出"NO"。否则输出"YES",并用N×N的矩阵表示湖泊间的相邻关系,即如果湖泊i与湖泊j之间有水路相连,则第i行的第j个数字为1,否则为0。每两个数字之间输出一个空格。如果存在多种可能,只需给出一种符合条件的情形。相邻两组测试数据之间输出一个空行。

题目要求,给定N个点的度数,构造一个无向图,如果能构造出来,输出YES并且输出该图的邻接矩阵,否则输出NO.
解法: 只需要把所有的节点的可以接的边数降为0即可,如果不能达到这个要求,说明无法构成一个无向图,至于怎么去降节点的可以接的边数,每次都需要对保存节点可以接的边数的数组进行排序(降序),拿出可以接的边数最大的节点,按可以接的边数的降序从剩余的节点中拿节点和它匹配,匹配的条件是这两个节点之间没有边,而且可以接的边数要大于0. 重复上述操作N次即可.
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 20;
int g[MAXN][MAXN],vis[MAXN][MAXN];
struct node
{
	int deg;
	int id;
	bool vis;
	bool operator < (const node &n) const
	{
		return deg>n.deg;
	}
}deg[MAXN];
void init()
{
	memset(g,0,sizeof(g));
	for(int i=0;i<MAXN;i++)
	{
		for(int j=0;j<MAXN;j++)
		{
			if(i==j)vis[i][j]=1;
			else vis[i][j]=0;
		}
	}
}
bool reduce(int n,int u)
{
	for(int i=0;i<n;i++)
	{
		if(!vis[deg[u].id][deg[i].id]&°[u].deg&°[i].deg)
		{
			g[deg[u].id][deg[i].id]=g[deg[i].id][deg[u].id]=vis[deg[u].id][deg[i].id]=vis[deg[i].id][deg[u].id]=1;
			deg[u].deg--;
			deg[i].deg--;
		}
	}
	return deg[u].deg==0;
}
bool build_graph(int n)
{
	int lp = n;
	while(lp--){
		sort(deg,deg+n);
		if(reduce(n,0))continue;
		else return false;
	}
	return true;
}
void solve(int n)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(!j)cout<<g[i][j];
			else cout<<" "<<g[i][j];
		}
		cout<<endl;
	}
}
int main()
{
	int cas=0,t,n;
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=0;i<n;i++)cin>>deg[i].deg,deg[i].id=i,deg[i].vis=false;
		init();
		bool ok = build_graph(n);
		if(cas++)cout<<endl;
		if(ok)
		{
			cout<<"YES"<<endl;
			solve(n);
		}
		else
		{
			cout<<"NO"<<endl;
		}
	}
	return 0;
}

分享到:
评论

相关推荐

    acm 题目汇总(好东西)

    连通性问题,如POJ 1236 "Network of Schools" 和 POJ 1659 "Frogs' Neighborhood",则通常需要DFS(深度优先搜索)和缩点技巧,以及对图的度数进行分析。 在ACM竞赛中,理解和掌握这些算法是至关重要的,因为它们...

    ACM题目大汇总

    2. **POJ1659 Frogs'Neighborhood** - **题意**:根据给定的度序列构造图。 - **解法**:采用贪心算法,并参考Havel-Hakimi定理来进行证明。 以上是对部分图论和网络流问题的介绍与解析,每一道题目都有其独特的...

    建设项目管理-勘查设计管理.ppt

    建设项目管理-勘查设计管理.ppt

    实训商业源码-绿色环保设备网站源码-毕业设计.zip

    实训商业源码-绿色环保设备网站源码-毕业设计.zip

    这篇文章是《2025文化营销10大趋势报告》的内容概述,主要分析了当前文化营销领域的关键趋势和发展方向 以下是文章的主要内容总结:

    内容概要:本文介绍了《2025文化营销10大趋势报告.pdf》的主要内容,涵盖了文化营销的十大趋势,包括触摸手工艺的温度、在地叙事走出「在地」、赛博冲浪抢占前排、女性议题长出「新枝」、品牌入「圈」高亮身份标识、以智性声音唤醒内心力量、文化体验迈向品牌主场、文化景观迎来重构浪潮、文化品牌以「生活」做解法、文化复兴正当时。报告通过具体案例分析了品牌如何利用这些趋势与消费者建立深度连接,如通过非遗民艺、圈层文化、文化热点、女性互助等手段,实现品牌价值和文化认同的双赢。 适用人群:市场营销人员、品牌管理者、广告策划人员、文化研究者。 使用场景及目标:①帮助品牌更好地理解当前文化营销的趋势和消费者心理;②指导品牌制定更具针对性和创新性的营销策略;③通过案例学习,提升品牌的文化营销实践能力。 其他说明:本文不仅提供了对文化营销趋势的深入解析,还强调了品牌在进行文化营销时应注重真诚、深度和长期价值,避免表面化和同质化。同时,报告呼吁品牌在营销中尊重和理解文化内核,积极回应社会议题,以实现与消费者的情感共鸣和精神共振。

    实训商业源码-彩虹代刷-毕业设计.zip

    实训商业源码-彩虹代刷-毕业设计.zip

    基于Python与MySQL的小区物业管理系统.zip

    基于Python与MySQL的小区物业管理系统.zip

    基于Python的Keras卷积神经网络图片分类系统.zip

    基于Python的Keras卷积神经网络图片分类系统.zip

    基于MATLAB的电力系统分段电价需求响应算法实现削峰填谷 - 电力系统

    内容概要:本文介绍了利用MATLAB实现电力系统的分段电价需求响应算法,旨在通过调整不同时段的电价变化率来优化电力系统的负荷分布,达到削峰填谷的效果。文中详细解析了程序的关键步骤,包括参数设置、时段处理、负荷总量守恒以及可视化展示。通过设定电价基准和弹性系数矩阵,程序能够模拟不同电价下各时段的负荷需求变化,并确保总用电量保持不变。此外,还展示了如何使用MATLAB内置函数如plotyy进行结果可视化,使电价与负荷需求的变化关系更加直观。 适合人群:从事电力系统研究、智能电网开发的技术人员,以及对电力市场机制感兴趣的学者和学生。 使用场景及目标:适用于电力公司制定合理的电价政策,评估不同电价策略对电力负荷的影响,从而优化资源配置,提高电力系统的稳定性和效率。 其他说明:该模型提供了一种简单而有效的手段来验证价格策略的可行性,帮助决策者在实施新电价政策之前进行充分的风险评估。未来可以进一步扩展模型,引入更多复杂因素如时滞效应和用户行为随机性,使其更接近实际情况。

    欧姆龙PLC NJ系列模切机程序:12轴EtherCAT伺服运动与张力控制的高级应用 - EtherCAT

    内容概要:本文深入介绍了欧姆龙PLC NJ系列模切机程序的设计与实现,涵盖12轴EtherCAT总线伺服运动控制、张力控制PID算法、隔膜自动纠偏控制以及同步运动控制等核心技术。通过结构化编程和ST语言功能块的应用,确保了系统的高精度和稳定性。文中提供了详细的代码示例和技术解析,帮助读者理解每个功能模块的具体实现。 适合人群:具备PLC基础知识并希望深入了解工业自动化控制技术的工程师和技术人员。 使用场景及目标:适用于需要进行多轴运动控制、张力调节和同步操作的工业设备开发和维护。通过学习本项目,读者能够掌握PLC高端复杂应用的实际操作技能,提升解决实际工程问题的能力。 其他说明:本文不仅提供理论讲解,还附有大量实用的代码片段,便于读者动手实践。此外,项目结构规范、注释详尽,有助于提高代码的可读性和可维护性。

    论文模板-html5工业设备网站源码-实训商业源码.zip

    论文模板-html5工业设备网站源码-实训商业源码.zip

    基于Matlab Simulink的直流配电网仿真:下垂控制与VSC换流器模型的电压电流波形及有功功率分析 电力系统

    内容概要:本文详细介绍了利用Matlab Simulink对直流配电网进行仿真的过程,重点展示了下垂控制仿真模型和换流器(VSC)仿真模型。通过这两个模型,作者分析了电压、电流波形及其稳定性,并研究了不同条件下有功功率的变化。文中还提供了一个简化的Matlab代码示例,帮助读者理解和实现直流配电网的建模与仿真。 适合人群:从事电力系统研究的专业人士、高校师生及相关领域的研究人员。 使用场景及目标:适用于希望深入了解直流配电网运行机制和技术细节的人群,旨在提高他们对该领域的理论认知和实践能力。 其他说明:文章不仅提供了理论解释,还包括具体的操作步骤和代码片段,便于读者动手实验。同时强调了直流配电网在未来能源网络发展中的重要性和潜力。

    西门子智能控制设备调试:程序集成、模拟量与通讯控制双重应用,动态图演示与全套EPLAN图纸齐全 · PLC编程

    内容概要:本文介绍了西门子200SMART程序的成功编写及其在工业自动化项目中的应用。该程序实现了模拟量控制和通讯控制两种方式,涵盖了伺服控制和温控表的通讯。程序经过详细的调试,确保设备能够在复杂环境下稳定运行。同时,配备了西门子触摸屏界面,提供设备工作动图和丰富信息展示,便于用户监控和维护。此外,还提供了全套EPLAN图纸,详细展示了设备的电气原理图、接线图和布局图,为设备的安装、调试、维护和升级提供了重要支持。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程、伺服控制和温控系统有需求的专业人士。 使用场景及目标:适用于需要实现高精度控制和稳定通信的工业自动化项目,旨在提高设备运行效率和稳定性,减少故障率并优化维护流程。 其他说明:本文不仅详细记录了程序编写的技术细节,还强调了实际应用中的关键点,如抗干扰措施、通讯故障处理等,为读者提供了宝贵的实践经验。

    操作系统RHEL10.0官网正式版ISO安装镜像

    对于想要部署或体验RHEL10.0的企业用户和个人开发者来说是非常有用的信息。 适合人群:需要部署企业级服务器环境的企业IT管理员、对RHEL系统感兴趣的个人开发者。 使用场景及目标: ①企业IT管理员准备搭建基于RHEL10.0的操作系统环境时可以据此下载所需镜像; ②个人开发者想要学习研究RHEL10.0特性,构建本地测试环境。 链接: https://pan.baidu.com/s/1C-_N5rkJjBD1r7yPRzTKJg?pwd=d3s6 提取码: d3s6 RedHat-10-HashSum.txt Red_Hat_Enterprise_RHEL_Lightspeed-zh-CN.pdf rhel-10.0-x86_64-boot.iso rhel-10.0-x86_64-dvd.iso rhel-10.0-x86_64-kvm.qcow2 rhel-10.0-x86_64-wsl2.tar.gz rhel-rt-10.0-x86_64-dvd.iso virtio-win-1.9.45.iso VMware-workstation-full-17.6.3-24583834.rar Xshell-8.0.0069p 免费直用.rar beat HashSums.txt rhel-10.0-beta-aarch64-dvd.iso rhel-10.0-beta-x86_64-dvd.iso

    三相PWM整流器Simulink仿真:双闭环PI控制与SVPWM调制策略的应用 电能质量 (05月)

    内容概要:本文详细介绍了基于双闭环PI控制和SVPWM调制策略的三相PWM整流器Simulink仿真模型。三相PWM整流器作为一种电力电子装置,主要用于将交流电转换为直流电。文中首先解释了三相PWM整流器的基本概念及其重要性,接着重点阐述了双闭环PI控制(包括电压外环和电流内环)和SVPWM调制策略的具体实现方法。双闭环PI控制确保系统在面对负载突变等复杂工况时仍能保持稳定,而SVPWM调制策略则提高了电压和电流的波形质量,降低了交流侧的谐波含量。最后,通过对仿真结果的分析,展示了该模型在不同工况下的优异整流效果和良好的电能质量提升能力。 适合人群:从事电力电子、自动化控制等领域研究的技术人员和高校相关专业师生。 使用场景及目标:适用于需要深入了解三相PWM整流器工作原理和技术细节的研究人员,帮助他们掌握Simulink仿真工具的使用技巧,以便更好地应用于实际项目中。 其他说明:本文不仅提供了理论知识,还结合了具体的仿真案例,使读者能够更加直观地理解和掌握所涉及的技术要点。

    婚庆公司网络营销策划书.doc

    婚庆公司网络营销策划书.doc

    Simulink与Carsim联合仿真:基于PID与MPC的自适应巡航控制与紧急避撞车辆动力学模型指导

    内容概要:本文详细介绍了如何利用Simulink和Carsim进行联合仿真,实现基于PID和MPC的自适应巡航控制和紧急避撞功能。主要内容包括Carsim参数设置cpar文件、Matlab S函数编写、Simulink车辆动力学模型构建以及远程指导。首先,Carsim参数设置涵盖了车辆基本参数、道路条件和环境因素,确保仿真的准确性。接着,通过编写Matlab S函数实现了PID和MPC控制算法,用于计算控制信号,如油门开度和刹车力度。然后,在Simulink中构建了车辆动力学模型,模拟汽车行驶过程及其物理特性。最后,提供了远程指导功能,便于实时监控和调整实验过程。 适合人群:对汽车驾驶辅助系统感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于研究和开发自适应巡航控制系统,旨在提高驾驶安全性和舒适性,特别是在复杂交通环境中。 其他说明:随着自动驾驶技术的发展,这种联合仿真的应用前景广阔,能够帮助研究人员更深入地理解和优化汽车行驶过程和动力学特性。

    施工项目管理手册定稿.doc

    施工项目管理手册定稿.doc

    数据处理与分析期末试题A卷.pdf

    数据处理与分析期末试题A卷.pdf

    实训商业源码-红色机械设备网站源码-毕业设计.zip

    实训商业源码-红色机械设备网站源码-毕业设计.zip

Global site tag (gtag.js) - Google Analytics