<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 147  文章 - 71  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類(146)

    隨筆檔案(147)

    文章分類(28)

    文章檔案(28)

    喜歡的Blog

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    http://acm.pku.edu.cn/JudgeOnline/problem?id=1129
    【題意簡(jiǎn)述】信道分配。給定一個(gè)無向圖,為每頂點(diǎn)填上顏色,要求滿足相鄰的頂點(diǎn)顏色不同,問最少的顏色數(shù)是多少?
    【分析】利用四色定理,直接枚舉顏色數(shù)+DFS,其中DFS是暴力枚舉每個(gè)頂?shù)念伾员阏业揭粋€(gè)可行解。
    import java.util.*;
    import java.io.*;

    public class poj_1129{
        
        
    public static int[][] g=new int[26][26];
        
        
    public static int solve(int n){
            
    int i,j,cnum;
            
    boolean tag=true;
            
    // 無邊圖只用1色即可
            for(i=0;i<&& tag;i++){
                
    for(j=i+1;j<&& tag;j++){
                    
    if(g[i][j]==1
                        tag
    =false;
                }

               }

            
    if(tag) 
                
    return 1;
            
            
    for(cnum=2;cnum<=4;cnum++)    // 枚舉答案+dfs
            {
                
    int[] x=new int[n];
                Arrays.fill(x,
    -1);
                
    if(DFS(x,0,cnum,n)) 
                    
    return cnum;
            }

            
    return -1;
        }

        
        
    //DFS的復(fù)雜度是顏色數(shù)^頂點(diǎn)數(shù)(4^26,其中可行性剪枝剪掉了很多分支) 
        public static boolean DFS(int[] x,int vnum, int cnum,int n){
            
    if(vnum == n) return true;    // v的頂點(diǎn)都上色,可行解
            for(int i=0;i<cnum;i++){    // 如果某個(gè)頂點(diǎn)沒有顏色填,返回上一層
                x[vnum] = i;
                
    if(check(vnum,x,i,n))         
                    
    if(DFS(x,vnum+1,cnum,n)) // 合法,枚舉下一個(gè)頂點(diǎn)
                        return true;
            }

            
    return false;
        }


        
    // 判斷相鄰的頂點(diǎn)是否有涂過這種顏色
        public static boolean check(int vnum,int[] x,int t,int n){
            
    boolean find=true;
            
    for(int i=0;i<&& find;i++){
                
    if(g[vnum][i]==1 && x[i]==t)
                    find
    =false;
            }

            
    return find;
        }

        
        
    public static void main(String rgs[]) throws Exception
        
    {  
            Scanner cin 
    = new Scanner(new BufferedInputStream(System.in));
            
    int i,j,n=cin.nextInt();
            
    while(n!=0){            
                
    for(i=0;i<n;i++)
                    Arrays.fill(g[i],
    0);        
                
    for(i=0;i<n;i++){
                    String s 
    = cin.next();
                    
    for(j=2;j<s.length();j++)
                        g[i][s.charAt(j)
    -'A']=1;
                }

                
    int count=solve(n);
                
    if(count==1)
                    System.out.println(count
    +" channel needed.");
                
    else
                    System.out.println(count
    +" channels needed.");
                n
    =cin.nextInt();
            }

        }

    }
    posted on 2009-09-10 15:21 飛翔天使 閱讀(861) 評(píng)論(1)  編輯  收藏 所屬分類: poj

    FeedBack:
    # re: poj1129(Channel Allocation) 2012-05-09 15:36 11
    DFS(x,1,cnum,n)//應(yīng)該這樣吧?  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲av乱码一区二区三区| 免费黄色小视频网站| 深夜福利在线免费观看| 亚洲人成影院午夜网站| 亚洲乱码一区二区三区在线观看| 三年片在线观看免费大全| 久久久久国产免费| 中文字幕无线码免费人妻| jizzjizz亚洲日本少妇| 2020久久精品亚洲热综合一本| 亚洲国产精品自在在线观看| 亚洲色成人中文字幕网站| 亚洲国产精品13p| 免费大学生国产在线观看p| 免费看美女被靠到爽的视频| 在线精品一卡乱码免费| 99re6热视频精品免费观看| 一区二区三区无码视频免费福利| 国产精品永久免费| 国产97视频人人做人人爱免费| 香蕉视频在线观看免费| 无码天堂va亚洲va在线va| 亚洲精品动漫免费二区| 亚洲日韩一区二区三区| 亚洲综合精品成人| 亚洲人av高清无码| 亚洲色大成网站WWW国产| 亚洲一区二区观看播放| 亚洲熟女精品中文字幕| 亚洲欧美日韩国产成人| 亚洲精品一卡2卡3卡四卡乱码| 亚洲AV男人的天堂在线观看| 99热亚洲色精品国产88| 亚洲国产成人精品无码区二本| 亚洲日韩中文字幕一区| 日日摸日日碰夜夜爽亚洲| 一级毛片a免费播放王色| 少妇性饥渴无码A区免费| 精品一卡2卡三卡4卡免费视频| 国产精成人品日日拍夜夜免费| 中文字幕免费在线|