poj1659—青蛙的邻居—度数与可图

本文介绍了POJ1659题目的解题思路,主要涉及图论中的可图问题。通过计算节点度数并按度数排序,从度数最大节点开始分配度数给度数较小的节点,不断更新直至所有节点度数为0,判断图的可行性。同时在过程中可以确定节点间的连接关系。附带解题源代码。
摘要由CSDN通过智能技术生成

题目链接:

http://poj.org/problem?id=1659

 

解题思路:

题目有两个要求,1是判断给定这些点的度数,问这些点是否可图;

2是需要输出这些点与点之间的关系。

这个两个问题是可以一起解决的。

首先我们可以将每个点的度数是可以计算出来的,按照度数将所有的点排序之后。

从度数最大的点开始,我们可以将其度数分配给比它度数小的一些点。

比如:

节点编号:2  3  4  1  5

节点度数:4  4  2   2  2

那么我们可以将节点2的度数分配给节点:3 4 1 5,每个点分配一个度数。

那么这几个点的度数都需要减1,2号节点的度数变为0,并且2号节点我们不需要再管它了。

就这样一直更新下去,每次更新之后都需要对点进行排序,直到最后所有点的度数都为0,那么这些点是可图的。

同时在做的过程当中,我们也能确定哪些边是相连的。

 

源代码:

#include<stdio.h>
#include<iostream>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
#include<vector>
#include<set>
#include&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值