Assigning Frequencies UVALive - 8273

题目链接

突然发现我最近写博客都不解释题意了,想了一下还是应该解释一下题意,写给自己看的博客,简单说一下题意,这样以后自己回来看也不用再读题了。啊啊啊还有一件事情啊,上个月低沉的时候偶然看到了以为学长的ACM生涯回顾总结,发现是我们学校的一个学长,看了他的博客以后感觉哇好喜欢这个学长(emmmm别误会),因为自己笨笨的所以就很喜欢这种努力的学长,可能那种天才学长学姐不是自己能仰望的吧。学长回复我了嘿嘿嘿!!!

啦啦啦这道题是说要给卫星分发频率,要求相邻的卫星频率不可以相同,问能否只用三种频率实现上述要求。刚开始看到这道题目觉得改用并查集,emmmm没忍住搜了题解,题解说是要用搜索哇塞打开新世界的大门啊,搜索可真神奇,没想过可以用搜索。暴力搜索一发,ojbk。

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 30;
int n,m,x,y;
int b[maxn],vis[maxn][maxn];
bool dfs(int cur)
{
    for(int i = 0;i < cur;i++)
    {
        if(vis[cur][i] && b[cur] == b[i])
            return false;
    }
    if(cur == n - 1) return true;
    for(int i = 0;i < 3;i++)
    {
        b[cur + 1] = i;
        if(dfs(cur + 1)) return true;
    }
    return false;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        memset(b,0,sizeof(b));
        memset(vis,0,sizeof(vis));
        while(m--)
        {
            scanf("%d%d",&x,&y);
            vis[x][y] = vis[y][x] = 1;
        }
        if(dfs(0)) printf("Y\n");
        else printf("N\n");
    }
    return 0;
}

之前的AC代码,emmm现在再交就不对了,搜了一下网上的题解交上了也不对,先这样吧,溜去打网络赛了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值