UVA - 193 Graph Coloring

原创 2016年08月29日 22:27:29

题目大意:涂色,相邻(有连接)的点不能都上色,求最多能涂多色个点,输出个数和编号。

解题思路:dfs 从一号点开始判断,与当前点连接的点是否有涂色,如果都没有,就给当前点涂色(回溯当前点不涂色),直到判断完所有的点,统计一下上色的点的个数,存下较多的情况。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
bool link[200][200];
bool node[200];
int m, n, k;
int ans, tmp;
int as[200];
void dfs(int now) {
    if (now > n) {
        tmp = 0;
        for (int i = 1; i <= n; i++)
            if (node[i]) tmp++;
        if (tmp > ans) {
            ans = tmp;
            int tag = 1;
            for (int i = 1; i <= n; i++)
                if (node[i]) as[tag++] = i;
        }
        return;
    }
    int tag = 1;
    for (int i = 1; i <= n; i++)
        if (link[now][i] && node[i])
            tag = 0;
    if (tag) {
        node[now] = 1;
        dfs(now+1);
    }
    node[now] = 0;
    dfs(now+1);

}
int main() {
    scanf("%d", &m);
    while (m--) {
        memset(link, 0, sizeof(link));
        scanf("%d%d", &n, &k);
        for (int i = 0; i < k; i++) {
            int a, b;
            scanf("%d%d", &a, &b);
            link[a][b] = 1;
            link[b][a] = 1;
        }

        ans = 0;
        dfs(1);

        printf("%d\n", ans);
        for (int i = 1; i < ans; i++)
            printf("%d ", as[i]);
        printf("%d\n", as[ans]);
    }
return 0; 
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

uva 193 - Graph Coloring

点击打开链接 题目意思:  给定n个节点,节点的编号为1-n,在给定m个节点链接的信息,现在要求对节点图色,只有两种颜色可以黑色和白色并且相邻的节点不能同时为黑色但是可以为白色,要求黑色节点...
  • cgl1079743846
  • cgl1079743846
  • 2012年07月17日 00:05
  • 1116

UVa 193 - Graph Coloring

193 - Graph Coloring 10946 22.52% 2634 58.39% 题目链接:...
  • shuangde800
  • shuangde800
  • 2012年07月17日 22:14
  • 1186

UVA 193 Graph Coloring

You are to write a program that tries to find an optimal coloring for a given graph. Colors are appl...
  • jtjy568805874
  • jtjy568805874
  • 2015年02月17日 15:36
  • 284

uva 193 - Graph Coloring

Graph Coloring  You are to write a program that tries to find an optimal coloring for a g...
  • Frankiller
  • Frankiller
  • 2012年07月30日 17:19
  • 1192

UVA 193 - Graph Coloring

题目大意:g #include #include int edge[110][110], color[110] = {0}, ans[110], max, n; bool check(in...
  • kl28978113
  • kl28978113
  • 2014年08月15日 00:14
  • 1365

UVA 193 Graph Coloring

UVA-193题意:给出n个点m条边,每条边不允许两端都染色。求最多可以染色多少个点,这些点是哪些。 解题思路:从第一个点开始枚举染或不染,染的条件是它相连的点都未染色。暴力DFS。/*******...
  • QzNarsh
  • QzNarsh
  • 2016年08月12日 09:48
  • 115

UVa 193 - Graph Coloring

题目链接:UVa 193 - Graph Coloring 回溯。 一个图只有两种情况,涂黑色或者涂白色,涂黑色或者涂白色其实都算访问过,跟素数环那类题目不同,如果用循环的话一直往后走,我刚开始判断连...
  • fobdddf
  • fobdddf
  • 2014年03月08日 11:18
  • 458

UVA - 193 Graph Coloring

题目大意:给出N个点,M条无向边,要求两个相连的点不能
  • L123012013048
  • L123012013048
  • 2014年10月22日 00:57
  • 464

uva 193 Graph Coloring

用回溯法枚举n个节点可能的黑白组合,图的遍历不一定非要按照邻接的节点进行dfs,回溯的条件是,即使接下来所有没有访问的节点都涂黑色,也不可能比当前全局的最多黑色节点数目多,就进行回溯。 #inc...
  • xiaohaowudi
  • xiaohaowudi
  • 2013年10月25日 16:48
  • 319

uva 193 Graph Coloring

题目大意:给定一个图,然后只能够使用黑白两色给图上色,相邻节点不能够出现同为黑色。现在问能够被图为黑色的节点的个数最大为多少个,打印出一种方案。 题目:暴力搜索,枚举每个节点为黑色的情况,然...
  • lovejava123qqq
  • lovejava123qqq
  • 2015年08月09日 15:44
  • 176
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA - 193 Graph Coloring
举报原因:
原因补充:

(最多只允许输入30个字)