zoukankan      html  css  js  c++  java
  • POJ 1419

      1 #include <iostream>
      2 #define MAXN 105
      3 #define  max _max
      4 using namespace std;
      5 
      6 int j;
      7 bool _m[MAXN][MAXN];
      8 int ans[MAXN];
      9 int ok[MAXN];
     10 int mark[MAXN];
     11 int max;
     12 int tem;
     13 
     14 int n;
     15 int k;
     16 int index;
     17 
     18 void DFS(int time);
     19 int main()
     20 {
     21     //freopen("acm.acm","r",stdin);
     22     int test;
     23     int i;
     24     int j;
     25     int u;
     26     int v;
     27     cin>>test;
     28     while(test --)
     29     {
     30         cin>>n>>k;
     31         memset(mark,0,sizeof(mark));
     32         memset(_m,false,sizeof(_m));
     33         for(i = 0; i < k; ++ i)
     34         {
     35             cin>>u;
     36             cin>>v;
     37             -- u;
     38             -- v;
     39             _m[u][v] = true;
     40             _m[v][u] = true;
     41         }
     42         max = -1;
     43         index = 0;
     44         DFS(0);
     45         cout<<max<<endl;
     46         for(i = 0; i < max; ++ i)
     47         {
     48             cout<<ok[i]+1<<" ";
     49         }
     50         cout<<endl;
     51     }
     52 }
     53 //1黑 2白
     54 void DFS(int time)
     55 {
     56 
     57     int i;
     58     int f = 0;
     59 
     60     for(i = 0; i < n; ++ i)
     61     {
     62         if(_m[time][i])
     63         {
     64             if(mark[i] == 1)
     65             {
     66                 f = 1;
     67                 break;
     68             }
     69         }
     70     }
     71     
     72 //    if(tem + n - time < max)
     73 //        return;
     74     if(time == n)
     75     {
     76         if(tem > max)
     77         {
     78             max = tem;
     79             for(i = 0; i < index; ++ i)
     80             {
     81                 ok[i] = ans[i];
     82             }
     83         }
     84         return;
     85     }
     86 
     87     if(f != 1)
     88     {
     89         mark[time] = 1;
     90         ans[index ++] = time;
     91         ++ tem;
     92         DFS(time+1);
     93         mark[time] = 0;
     94         -- index;
     95         -- tem;
     96     }
     97     if(tem + n - time > max)
     98         DFS(time+1);
     99     
    100 }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    java基础1
    display:inline
    运用<ul><li>做导航栏
    ul和li 基本用法分析(这里主要想学习怎么用在导航栏中)
    转换(旋转)transform
    典型相关分析
    相关性模型-相关系数
    拟合算法
    插值算法
    评估类模型之优劣解距离法Topsis模型
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4563384.html
Copyright © 2011-2022 走看看