【POJ】1129【涂色问题】【Channel Allocation】

原创 2013年12月03日 11:12:53

为啥人家都是用DFS做的呢?我就是用灰常普通的做法做滴:

原文链接:http://poj.org/problem?id=1129

//大致意思就是用最小的颜色涂满所有区域,且相邻区域不使用同种颜色(这里的相邻就是例如A:BC,A与B、C相邻)
 

Sample Input

2
A:
B:
4
A:BC
B:ACD
C:ABD
D:BC
4
A:BCD
B:ACD
C:ABD
D:ABC
0

Sample Output

1 channel needed.
3 channels needed.
4 channels needed.
#include <stdio.h>
#include <string.h>
#define INF 30

int min=INF,n,mi,sum;
int map[26][26];
int color[26];
void play(int flag){//flag为0意味着上一次有点的color值发生变化,有需要重新找新的点
    if(!flag){
        int k,i;
        flag=1;
        sum++;
        for(k=0; k<n; k++){
            if(color[k]==sum){
                for(i=k+1; i<n; i++){
                    if(map[k][i] && color[k]==color[i]){ //相连&&颜色相同就要改变
                        flag=0;
                        color[i]++;//因为与k点的color值相同,因此要发生改变,color值++
                    }
                }
            }
        }
        play(flag);
    }
    else
        return ;
}
int main(){
    while(scanf("%d",&n),n){
        int i;
        char a,b;
        memset(map,0,sizeof(map));
        memset(color,0,sizeof(color));
        getchar();
        for(i=0; i<n; i++){
            scanf("%c",&a);
            a-=65;
            getchar();
            while((b=getchar())!='\n'){
                b-=65;
                map[a][b]=1;
            }
            color[a]++;//每点的color初值均为1
        }
        sum=0;
        play(0);
        if(sum==1)//只有一种color值
            printf("1 channel needed.\n");
        else
            printf("%d channels needed.\n",sum);
    }
    return 0;
}

poj 1129 Channel Allocation

开始还在考虑离散老师说的,先按照度来进行排序,然后先访问度高的依次往下访问(进行搜索),然后发现他们都直接遍历的就可以了。需要注意的是,当channel为1时,为channel,当channel为2时...
  • purevegetable
  • purevegetable
  • 2013年09月02日 15:41
  • 492

pku 1129 Channel Allocation dfs 涂色问题

//题目分析:用dfs搜索 ,dfs(int index,int color) //index搜索到的下标,color是颜色的种数 #include #include using names...
  • pear86743
  • pear86743
  • 2012年10月23日 11:02
  • 303

Channel Allocation(poj 1129 )

Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11379   Accept...
  • u013009575
  • u013009575
  • 2014年02月07日 23:19
  • 500

Channel Allocation(POJ 1129)

Description When a radio station is broadcasting over a very large area, repeaters are used to ...
  • luckyrass
  • luckyrass
  • 2015年01月30日 18:50
  • 272

POJ 1129 Channel Allocation

Channel Allocation Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u ...
  • zhuyu__com
  • zhuyu__com
  • 2016年05月07日 20:13
  • 375

POJ 1129 - Channel Allocation

Language: Default Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissi...
  • sdut15110581043
  • sdut15110581043
  • 2016年08月13日 20:59
  • 146

Poj 1129 Channel Allocation

题目链接:点击打开链接 Description When a radio station is broadcasting over a very large area, repeaters a...
  • txgANG
  • txgANG
  • 2016年08月18日 19:27
  • 103

POJ 1129 Channel Allocation

这题很水,最多只有26个点 的图染色问题,暴搜就行。 题目翻译: 当一个广播电台在一个非常大的地区,广播站会用中继器来转播信号以使得每一个接收器都能接收到一个强烈的信号。然而,每个中继器必须慎重选...
  • lin375691011
  • lin375691011
  • 2013年08月22日 09:45
  • 4354

【POJ 1129】Channel Allocation

【POJ 1129】Channel Allocation暴搜做的 虽然放在了剪枝里。。。 大水题 不过好歹是训练计划第二周最后一题 做个纪念发一贴~(然而只是把上周计划完成了。。直接上代码:#incl...
  • ChallengerRumble
  • ChallengerRumble
  • 2015年08月10日 19:16
  • 658

POJ 1129 Channel Allocation 涂色问题 DFS 回溯 搜索

题意:构图,如果两点互相影响,则连接一条边。 剩下的就是图着色问题,相连的点不能用同一种颜色,问最少需要多少颜色。 写法一:0ms #include using namespace std...
  • qq_35109846
  • qq_35109846
  • 2017年05月10日 23:40
  • 128
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【POJ】1129【涂色问题】【Channel Allocation】
举报原因:
原因补充:

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