<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

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    http://acm.pku.edu.cn/JudgeOnline/problem?id=1129
    【題意簡述】信道分配。給定一個(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) 評論(1)  編輯  收藏 所屬分類: poj

    FeedBack:
    # re: poj1129(Channel Allocation) 2012-05-09 15:36 11
    DFS(x,1,cnum,n)//應(yīng)該這樣吧?  回復(fù)  更多評論
      
    主站蜘蛛池模板: 久久www免费人成看片| 337p日本欧洲亚洲大胆精品555588| 51精品视频免费国产专区| 一区二区三区精品高清视频免费在线播放| 亚洲国语在线视频手机在线| 亚洲精品卡2卡3卡4卡5卡区| 免费中文字幕一级毛片| 国产在线国偷精品产拍免费| 女同免费毛片在线播放| 一级毛片免费播放视频| 看Aⅴ免费毛片手机播放| 最新亚洲卡一卡二卡三新区| 亚洲精品福利在线观看| 亚洲avav天堂av在线不卡 | 精品亚洲A∨无码一区二区三区| 久久精品夜色噜噜亚洲A∨| 国产免费看插插插视频| 大陆一级毛片免费视频观看| 日韩中文字幕精品免费一区| 亚洲a一级免费视频| 成人电影在线免费观看| 日韩电影免费在线观看网站| 一级午夜a毛片免费视频| 老司机午夜免费视频| 成人精品国产亚洲欧洲| 国内成人精品亚洲日本语音| 亚洲国产精品网站在线播放| 亚洲精品国产suv一区88| 亚洲综合av一区二区三区| 亚洲视频无码高清在线| youjizz亚洲| 亚洲色无码专区一区| 亚洲欧美日韩久久精品| 亚洲欧洲专线一区| 亚洲欧好州第一的日产suv| 亚洲国产成人精品无码区二本| 亚洲午夜福利在线视频| 亚洲精品无码久久久久A片苍井空| 亚洲欧美国产精品专区久久| 亚洲欧美日韩国产精品一区| 国产精品亚洲综合网站|