zoukankan      html  css  js  c++  java
  • Uva140

    Bandwidth UVA - 140

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <queue>
     4 #include <vector>
     5 #include<string.h>
     6 #include<map>
     7 #include<bits/stdc++.h>
     8 #define LL long long
     9 #define maxn 1005
    10 using namespace std;
    11 int n,sw;
    12 int id[256],letter[10],ans[10],a[10],vis[10];
    13 int g[10][10];
    14 void dfs(int cur,int bw)
    15 {
    16     if(cur==n)
    17     {
    18         if(sw>bw)
    19         {memcpy(ans,a,sizeof(int)*n);
    20         sw=bw;}
    21         return;
    22     }
    23     for(int i=0;i<n;i++)
    24     {
    25         if(!vis[i]){
    26             int m=0;
    27             for(int j=0;j<n;j++)
    28             {
    29                 if(g[i][j]&&!vis[j])m++;
    30             }
    31             if(m>=sw)break;
    32 
    33         int ok=1;
    34         a[cur]=i;
    35         for(int j=0;j<cur;j++)
    36         {
    37             if(g[a[j]][i])
    38             {
    39                 int w=cur-j;
    40                 if(w>=sw)
    41                 {
    42                     ok=0;break;
    43                 }
    44                 if(w>bw)bw=w;
    45             }
    46         }
    47         if(ok)
    48         {
    49             vis[i]=1;
    50             dfs(cur+1,bw);
    51             vis[i]=0;
    52         }
    53         else break;
    54         }
    55     }
    56 }
    57 int main()
    58 {
    59     char input[1000];
    60     while(scanf("%s",input)==1&&input[0]!='#')
    61     {
    62         n=0;
    63         for(char ch='A';ch<='Z';ch++)
    64         {
    65             if(strchr(input,ch)!=NULL)
    66             {
    67                 id[ch]=n++;
    68                 letter[id[ch]]=ch;
    69             }
    70         }
    71      sw=n;
    72      int len=strlen(input),p=0,q=0;
    73      memset(g,0,sizeof g);
    74      for(;;)
    75      {
    76          while(p<len&&input[p]!=':')
    77             p++;
    78             if(p==len)break;
    79          while(q<len&&input[q]!=';')
    80             q++;
    81          for(int i=p+1;i<q;i++)
    82          {
    83              g[id[input[i]]][id[input[p-1]]]=1;
    84              g[id[input[p-1]]][id[input[i]]]=1;
    85          }
    86          p++,q++;
    87      }
    88      memset(vis,0,sizeof vis);
    89      dfs(0,0);
    90      for(int i=0;i<n;i++)
    91         printf("%c ",letter[ans[i]]);
    92      printf("-> %d
    ",sw);
    93     }
    94     return 0;
    95 }
  • 相关阅读:
    Spring Boot 使用mysql数据库
    Nginx开启Gzip压缩大幅提高页面加载速度
    构建微服务:Spring boot 入门篇
    Python时间戳和日期的相互转换
    【Mongodb】aggregate限制返回字段
    MongoDB的skip,limit,sort执行顺序
    结对-结对四则运算生成器-最终程序
    C# List分页
    c# List的排序
    C#并行编程-Parallel
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/10890195.html
Copyright © 2011-2022 走看看