POJ-1129 DFS染色+四色原理的应用
OJ-ID:
POJ-1129
author:
Caution_X
date of submission:
20190927
tags:
DFS+四色原理的应用
description modelling:
给定n个点的无向连通图,问至少需要几种颜色可以完成染色
major steps to solve it:
1.任选从一点开始染色
2.DFS不断向其他点进行染色
3.所有点都染过色,结束DFS
warnings:
根据四色原理,所有的图都可以用四种颜色完成染色
AC code:
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cctype>
#include <vector>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define ll long long
#define ull unsigned long long
using namespace std;
int n, ans, ok, vis[28];
bool ma[28][28];
bool check(int u, int sb)
{
for (int i = 1; i <= n; i++)
if (ma[u][i] && vis[i] == sb) {
return 0;
}
return 1;
}
void dfs(int u, int s)
{
if (ok) {
return ;
}
if (u == n + 1) {
ans = s;
ok = 1;
return ;
}
for (int k = 1; k <= s; k++) {
if (check(u, k)) {
vis[u] = k;
dfs(u + 1, s);
}
}
vis[u] = ++s;
dfs(u + 1, s);
}
int main()
{
char s[38];
while (scanf("%d", &n) != EOF && n) {
memset(ma, 0, sizeof(ma));
memset(vis, 0, sizeof(vis));
getchar();
for (int i = 1; i <= n; i++) {
scanf("%s", s);
int len = strlen(s);
for (int j = 2; j <= len - 1; j++) {
ma[i][s[j] - 'A' + 1] = 1;
ma[s[j] - 'A' + 1][i] = 1;
}
}
ok = 0;
dfs(1, 1);
if (ans == 1) {
puts("1 channel needed.");
} else {
printf("%d channels needed.\n", ans);
}
}
return 0;
}
最新文章
- 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)
- DOM(五)事件对象
- php总结:1.php介绍
- PHPCMS二次开发教程
- Struts2 语法--result type
- angular路由详解一(基础知识)
- java 设计模式 ---- 工场模式
- nginx学习笔记(一)
- Python面试题之Python面试题汇总
- SQL SERVER 查询哪些存储使用了该表
- IEEE signal processing letters 投稿经验
- java添加多个水印
- XamarinEssentials教程设置首选项Preferences的值
- 【Linux】【Jenkins】系统配置报反向代理设置有误问题的解决方案
- 一条sql语句引发的遐想:select t.*, t.rowid from STUDENT t
- Spring Framework核心概念之Bean生命周期管理
- 深入理解C/C++二维数组
- 项目经验总结-twice
- restful api安全验证问题
- 转 tensorflow模型保存 与 加载
热门文章
- Bootstrap --------- 了解与使用
- Redisson实现分布式锁(3)—项目落地实现
- GO与PHP的AES交互,key长度问题
- 如何访问到静态的文件,如jpg,js,css.
- String字符串工具类
- JS基础语法---冒泡顺序
- layui js 常用语句语法
- CodeForces - 1228C(质因数分解+贡献法)
- fetchone函数和fetchall函数返回值的区别
- 解构如何运用的解构--报错 throw new TypeError(&#39;Router.use() requires a middleware function but got a &#39; + gettype(fn))