四色着色问题 c语言编程,数据结构-图着色问题
7-38 图着色问题 (25 分)
图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?
但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。
输入格式:
输入在第一行给出3个整数V(0输出格式:
对每种颜色分配方案,如果是图着色问题的一个解则输出Yes,否则输出No,每句占一行。
输入样例:
6 8 3
2 1
1 3
4 6
2 5
2 4
5 4
5 6
3 6
4
1 2 3 3 1 2
4 5 6 6 4 5
1 2 3 4 5 6
2 3 4 2 3 4
输出样例:
Yes
Yes
No
No
一个简单的遍历图的问题,检查有连线的边颜色是否相同,判断使用颜色的数目是否等于k,必须要等于k,大于小于都不行,划重点。
其他地方就没有难度了。
#include
#include
#include
#include
using namespace std;
#define maxn 505
int map[maxn][maxn],judge[maxn][maxn];
int color[maxn],tong[maxn];
int n,m,k;
int cmp(int a,int b)
{
return a>b;
}
void init()
{
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
map[i][j] = maxn;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
init();
for(int i = 0; i < m; i ++)
{
int x,y;
scanf("%d %d",&x,&y);
map[x][y] = map[y][x] = 1;
}
int t;
scanf("%d",&t);
while(t--)
{
int flag = 0;
memset(tong,sizeof(tong));
for(int i = 1; i <= n; i ++)
{
scanf("%d",&color[i]);
int temp = color[i];
tong[temp]++;
}
sort(tong,tong+501,cmp);
for(int i = 0; i < maxn; i ++)
{
if(tong[i])
flag++;
else
break;
}
int index = 0;
if(flag>k||flagprintf("Non");
else if(!m)
printf("Yesn");
else
{
for(int i = 1; i <= n; i ++)
{
for(int j = i + 1; j <= n; j ++)
{
if(map[i][j]!=maxn&&color[i]!=color[j])
index ++;
else if(map[i][j]==maxn)
continue;
else if(map[i][j]!=maxn&&color[i]==color[j])
{
index = -1;
break;
}
}
if(index == -1)
break;
}
if(index == m)
printf("Yesn");
else
printf("Non");
}
}
}
总结
以上是编程之家为你收集整理的数据结构-图着色问题全部内容,希望文章能够帮你解决数据结构-图着色问题所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
四色着色问题 c语言编程,数据结构-图着色问题相关推荐
- 【数据结构(C语言)】数据结构-图
图 文章目录 图 一.基本概念 1.图的定义 2.约定符号 3.分类 4.子图 5.路 6.其他术语 7.ADT 二.存储结构 1.邻接矩阵(数组) 2.邻接表 三.基本算法 1.遍历 2.求无向图的 ...
- 四色着色问题 c语言编程,四色问题C语言怎么解决
思路:建立数据结构,录入数据内容,遍历着色,输出第一个可行的着色方案. 下面就四个方面详细分析一下 首先分析数据结构: 对于地图,一个区块包含一个唯一编号数据(这个编号可以是地名,也可以是数字)用来区 ...
- 三色小夜灯c语言编程,节能小夜灯
基于MC68HC908JL3抽油烟机控制器设计 谢志义; 家居智能小夜灯的设计 陈余;王璇; 单片机LPC935的ISP使用点滴 向吉春; 基于USB总线的神经网络重建仪研制 ...
- 四自由度机械手c语言编程设计,四自由度机械手的机械结构原理毕业设计毕业论文...
原标题:四自由度机械手的机械结构原理毕业设计毕业论文 四自由度机械手的机械结构原理毕业设计毕业论文 机械手是模仿人的手部动作,按给定程序.轨迹和要求实现自动抓取.搬运和操作的自动装置.它的应用价值在以 ...
- c语言程序 输入一个四位数,用c语言编程:输入一个四位数,求出它的个位、十位、百位、千位...
满意答案 QQ89748770 推荐于 2018.02.26 采纳率:45% 等级:13 已帮助:7318人 C代码:--------------------- int a; scanf(&qu ...
- Go语言 大话数据结构——图
1.名词解释: 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合.在图中的数据元素,我们称之为顶点( ...
- 四自由度机械手c语言编程设计,stm32开发:一种四自由度机械臂的简单算法
最近在做一个四自由度的机械臂,要实现的功能是,通过输入XYZ三轴的坐标值,让机械臂自动导航到坐标位置. 原理一句话可以概括:输入三个坐标值,通过计算得到底部步进电机的旋转角度和剩余三个舵机的旋转角度. ...
- 请用c语言编程求图的最短路径,最短路径-交通图-c语言实现
#include #include #include typedef struct ArcCell { int adj; //相邻接 }ArcCell; typedef ...
- 大智慧c语言编程,【图】大智慧外接DLL之C语言编程源码交流帖_数据、教程交流论坛_理想论坛 - 股票论坛...
private string[] GetCodes(string Market) //读取Day.dat中的代码 { //沪市指数代码转换表,大智慧同时保存沪市两类代码 string[,] cod ...
最新文章
- 后台开发经典书籍--高性能mysql
- Java并发知识总结,超详细!(下)
- 图片上传unexpected end of stream
- 通信工程制图期末考试大纲
- 能力成熟度模型(CMM)
- 中国水培营养素行业市场供需与战略研究报告
- 哪个oracle工具可以免费,Sqlite导入Oracle工具下载官方免费版_SqliteToOracle2.2英文版 - 系统之家...
- 一起学些LLVM(五): 学习lli/vmir
- centos7 安装gitea使用
- 德国奔驰、博世和保时捷的员工年薪有多少?
- flask 网页 javascript 按钮 点击事件
- 无法开启 IE 开发者工具
- 基于Zookeeper的ResourceManager-HA配置
- 美国科技大佬们最爱看的书
- scrapy中用来代替crawl 功能的main文件配置
- 【算法研究】 AEC 回音消除算法
- Linux服务器EDAC CE memory read error
- GPS北斗校时(NTP校时服务器)在某市国土资源局投入使用
- 生信常用分析图形绘制04 -- 桑基图
- 全国首个国家级合规数字资产二级交易平台“中国数字资产交易平台”将于2023年1月1日在京举行启动发布仪式
热门文章
- 支持1050ti显卡的linux系统,NVIDIA 的 GTX1050 Ti 与 GTX1050 显卡登场
- ntext在mysql_varchar和text说不清的那些事
- 计算两个数的乘积java编写_Java模拟计算机的整数乘积计算功能示例
- tengine简单安装_树莓派使用宝塔面板安装LNMP环境
- oracle 8i漏洞渗透,一次通过Oracle8i入侵系统之旅(组图)
- php 图片 byte数组,php – 将图像存储在PostgreSQL数据库的bytea字段中
- java 生成apk包_Eclipse导出安卓apk文件的图文教程
- php 静态页面模板类,dedetag.class.php 静态模板类
- python窗体设计插件_Python 界面生成器 wxFormBuilder 的入门使用(wxPython的界面设计工具的初学笔记)...
- Python一行代码给儿子制作九九乘法表