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;
}

POJ-1129 DFS染色+四色原理的应用的更多相关文章

  1. poj 1129(dfs+图的四色定理)

    题目链接:http://poj.org/problem?id=1129 思路:根据图的四色定理,最多四种颜色就能满足题意,使得相邻的两部分颜色不同.而最多又只有26个点,因此直接dfs即可. #inc ...

  2. Channel Allocation (poj 1129 dfs)

    Language: Default Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12 ...

  3. 【POJ - 2386】Lake Counting (dfs+染色)

    -->Lake Counting 直接上中文了 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= ...

  4. 迭代加深搜索 POJ 1129 Channel Allocation

    POJ 1129 Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14191   Acc ...

  5. cf804C(dfs染色)

    题目链接: http://codeforces.com/problemset/problem/804/C 题意: 有一颗含有 n 个顶点的树, 第 i 个顶点上有 k 个冰激凌, 每个冰激凌的种类为 ...

  6. .NET应用架构设计—面向对象分析与设计四色原型模式(彩色建模、领域无关模型)(概念版)

    阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我 ...

  7. DDD:四色原型中Role的 “六” 种实现方式

    背景 一个实体在不同的上下文中具备不同的职责,如:产品在“生产完成上下文”中具备的一些职责,在“质检相关上下文”中具备另外一些职责.四色原型.DIC和“UML事物模式”在不同的维度阐述了这一情况,在代 ...

  8. hdu 4751(dfs染色)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...

  9. hdu 5313 Bipartite Graph(dfs染色 或者 并查集)

    Problem Description Soda has a bipartite graph with n vertices and m undirected edges. Now he wants ...

随机推荐

  1. win7系统下安装Ubuntu18.04组成双系统

    最近在闲鱼上花了350大洋淘到了一台tinkpad sl510,这大概是一台发布于2009年的一台电脑了吧,处理器是酷睿二t440,2Gddr3的显卡,让我有点意外的是这台电脑的硬盘是7200转的32 ...

  2. Fusionstorage的逻辑架构

    Fusionstorage Fusionstorage的逻辑架构 Mdc:元数据控制,实现对分布式集群的状态控制,以及控制数据分布式规则,数据重建规则等,mdc默认部署在3个节点的zk盘上,形成mdc ...

  3. GO 基本语法——变量

    基本语法--变量 一.变量的使用 1.1 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称.在go中声明变量有多种语法. 所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以 ...

  4. .net 定时任务调度

    前段时间开发个项目需要自定义时间定时发送邮件,此处使用了Quartz 定时任务,在此记录下: /// <summary> /// 创建定时任务 /// </summary> / ...

  5. Python中最常见的10个问题(list)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 大熊 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  6. curl_multi_*模拟多线程异步用法

    测试环境: PHP版本:php7.0.10 mysql版本:5.7.14 测试用例:循环插入两千行数据到数据库 public function test_syn($pc){ // $pc = trim ...

  7. XHR 对象实例所有的配置、属性、方法、回调和不可变值

    当我们声明了一个XMLHttpRequest对象的实例的时候,使用for-in来循环遍历一下这个实例(本文使用的是chrome45版本浏览器),我们会发现在这个实例上绑定了一些内容,我把这些内容进行了 ...

  8. RSA 非对称加密算法的Java实现

    关于RSA的介绍Google一下很多,这里不做说明.项目开发中一般会把公钥放在本地进行加密,服务端通过私钥进行解密.Android项目开发中要用到这个加密算法,总结后实现如下: import andr ...

  9. jQuery-File-Upload $(...).fileupload is not a function $.widget is not a function

    使用 jQuery-File-Upload 库的时候碰到了 $(...).fileupload is not a function  和 $.widget is not a function  问题. ...

  10. 8. 多态——编译时类型&运行时类型

    一.引用变量的两种类型 1. 编译时类型:由声明该变量时使用的类型决定 2. 运行时类型:由实际赋给该变量的对象决定 如果编译时类型和运行时类型不一致,就可能出现多态. class BaseClass ...