zoukankan      html  css  js  c++  java
  • Codeforces Round #588 (Div. 2) Anadi and Domino (dfs)

    题目链接:https://codeforces.com/contest/1230/problem/C

     思路:暴搜,,,,赛后一遍过,为啥当时没想到。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<ctime>
     4 #include<cstring>
     5 #include<cstdlib>
     6 #include<cmath>
     7 #include<queue>
     8 #include<stack>
     9 #include<map> 
    10 #include<algorithm>
    11 #define Max(a,b) ((a)>(b)?(a):(b))
    12 #define Min(a,b) ((a)<(b)?(a):(b))
    13 #define Mem0(x) memset(x,0,sizeof(x))
    14 #define Mem1(x) memset(x,-1,sizeof(x))
    15 #define MemX(x) memset(x,0x3f,sizeof(x))
    16 using namespace std;
    17 typedef long long ll;
    18 const int inf=0x3f3f3f;
    19 const double pi=acos(-1.0);
    20 
    21 int cnt[30][30];
    22 struct node{
    23     int x,y;
    24     bool flag;
    25 }edge[30];
    26 
    27 void init()
    28 {
    29     memset(cnt,0,sizeof(cnt));
    30     for (int i=1;i<=6;i++){
    31         for (int j=i;j<=6;j++){
    32             cnt[i][j]++;
    33         }
    34     }
    35     return ;
    36 }
    37 int node1[20],n,m,ans;
    38 void dfs()
    39 {
    40     init();
    41     node edge1[30];
    42     for (int i=1;i<=m;i++){
    43         edge1[i].x=edge[i].x;
    44         edge1[i].y=edge[i].y;
    45         edge1[i].flag=false;
    46     } 
    47     int tmp=0;
    48     for (int i=1;i<=m;i++){
    49         if (cnt[node1[edge1[i].x]][node1[edge1[i].y]]>0){
    50             cnt[node1[edge1[i].x]][node1[edge1[i].y]]--;
    51             tmp++;
    52         }
    53     }
    54     ans=max(tmp,ans);
    55     return ;
    56 }
    57 void find(int pos)
    58 {
    59     if (pos==n+1){
    60         dfs();
    61         return ;
    62     }
    63     for (int i=1;i<=6;i++){
    64         node1[pos]=i;
    65         find(pos+1);
    66     }
    67     return ;
    68 }
    69 int main()
    70 {
    71     ans=0;
    72     cin>>n>>m;
    73     for (int i=1;i<=m;i++){
    74         cin>>edge[i].x>>edge[i].y;
    75         if (edge[i].x>edge[i].y){
    76             int temp=edge[i].x;
    77             edge[i].x=edge[i].y;
    78             edge[i].y=temp;
    79         }
    80     }
    81     find(0);
    82     cout<<ans<<endl;
    83     return 0;
    84 }
  • 相关阅读:
    【Android
    【数据结构】之链表(C语言描述)
    【数据结构】之顺序表(C语言描述)
    【Android
    【Android
    【Android
    【Android
    【Android
    在线HTTP速度测试(响应时间测试)及浏览器兼容测试
    阿里云 腾讯云 服务器挂载数据盘
  • 原文地址:https://www.cnblogs.com/q1204675546/p/11582039.html
Copyright © 2011-2022 走看看