Anadi and Domino--codeforces div2

发布时间:2020-10-03 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了Anadi and Domino--codeforces div2编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

题目大意:21枚多米诺牌,给你一个图,将多米诺牌放到图的边上,由同一个点发出的所有边,边上多米诺牌对应该点的一侧相同。

such as:

 

分享图片

题解:暴力枚举,即先给每个点一个值,然后判断在这种情况下可以放置多少个多米诺牌,枚举的时候可以dfs递归

#include<bits/stdc++.h>
using namespace std;
const int N=200;
int n,m;
int d[N];
int l[N],r[N];
int ans=0;
bool mark[N][N];
void check(){
    int sum=0;
    memset(mark,0,sizeof(mark));
    for(int i=1;i<=m;i++){
        int a=d[l[i]];
        int b=d[r[i]]; 
        if(a>b) swap(a,b);
        
        if(!mark[a][b]){//判断a,b这种牌有没有被用过; 
            mark[a][b]=1;
            sum++;
        }
    }
    ans=max(ans,sum);
}
void dfs(int x){
    if(x==n+1){//如果所有的点都被赋值,那就判断在这种情况下可以多少放置多少个; 
        check();
        return ;
    }
    for(int i=1;i<=6;i++){
        d[x]=i;
        dfs(x+1);
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        scanf("%d%d",&l[i],&r[i]); //指的是从l到r有一条边 
    }
    dfs(1);
    cout<<ans<<endl;
    return 0;
}

总结

以上是编程之家为你收集整理的Anadi and Domino--codeforces div2全部内容,希望文章能够帮你解决Anadi and Domino--codeforces div2所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!