Catowice City【Codeforces 1248 F】【BFS】

2023-11-09

Codeforces Round #594 (Div. 2) F


  一开始是听闻有人说这是一道Tarjan好题,然后就点进来做了,但是想来想去,却想了个另类的法子。

  我们可以看到,如果N个人都要选择的话,那么每个人都只能是审判者,或者是参赛者,所以,我们可以假设第一位是两种职业中的一种,然后去搜索一下,复杂度O(N)。并且,题目中要求的是审判者和参赛者都至少为1个人,所以会有非法的情况。

  注释写在代码里了。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define eps 1e-9
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define MP(a, b) make_pair(a, b)
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxN = 1e6 + 7;
int N, M, head[2][maxN], cnt[2];
struct Eddge
{
    int nex, to;
    Eddge(int a=-1, int b=0):nex(a), to(b) {}
}edge[2][maxN];
inline void addEddge(int op, int u, int v)
{
    edge[op][cnt[op]] = Eddge(head[op][u], v);
    head[op][u] = cnt[op]++;
}
bool vis[maxN];
int all;
inline void bfs(int op)
{
    for(int i=1; i<=N; i++) vis[i] = false;
    queue<int> Q;
    Q.push(1); vis[1] = true;
    all = 0;
    while(!Q.empty())
    {
        int u = Q.front(); Q.pop();
        all++;
        for(int i=head[op][u], v; ~i; i=edge[op][i].nex)
        {
            v = edge[op][i].to;
            if(vis[v]) continue;
            vis[v] = true;
            Q.push(v);
        }
    }
}
inline void init()
{
    cnt[0] = cnt[1] = 0;
    for(int i=1; i<=N; i++)
    {
        head[0][i] = head[1][i] = -1;
    }
}
int main()
{
    int T; scanf("%d", &T);
    while(T--)
    {
        scanf("%d%d", &N, &M);
        init();
        for(int i=1, u, v; i<=M; i++)
        {
            scanf("%d%d", &u, &v);
            if(u == v) continue;
            addEddge(0, u, v);  //正向,1作为J的时候
            addEddge(1, v, u);  //反向
        }
        bfs(0); //先假设1是监察官
        if(all < N)
        {
            printf("Yes\n");
            printf("%d %d\n", all, N - all);
            for(int i=1; i<=N; i++) if(vis[i]) printf("%d ", i); puts("");
            for(int i=1; i<=N; i++) if(!vis[i]) printf("%d ", i); puts("");
            continue;
        }
        bfs(1);
        if(all < N)
        {
            printf("Yes\n");
            printf("%d %d\n", N - all, all);
            for(int i=1; i<=N; i++) if(!vis[i]) printf("%d ", i); puts("");
            for(int i=1; i<=N; i++) if(vis[i]) printf("%d ", i); puts("");
            continue;
        }
        printf("No\n");
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Catowice City【Codeforces 1248 F】【BFS】 的相关文章

  • Infinite Fraction Path【HDU-6223】【BFS+剪枝】

    题目链接 训练赛的时候 想到的做法是倍增维护 因为每个点的后继是唯一的 然后又因为不会桶排 所以的复杂度是一定会TLE的 难受 听说桶排还是会被卡 大雾 然后下来补题的时候听了队友的意见 其实比赛的时候就应该多听听 也许就能想到这个bfs了
  • Daniel and Spring Cleaning【数位DP】【Codeforces 1245 F】

    Codeforces Round 597 Div 2 F 这道题化简一下就是让我们求有上下限的2进制数中有几对满足每一位的相 值不为1的对数 那么 首先看到这个1e9就会让人想到数位DP 然后接着就是如何去求的这样一个问题 我们不如将上下限
  • 境界的彼方_lduoj_bfs宽搜

    Description wyy是一个著名动画 境界的彼方 的男主 此时他非常的慌张 因为女主栗山未来进入了境界的彼方内部 并且花费了大量的血量去拯救wyy wyy此时也进入了境界的彼方 他妈给了他一张地图去寻找境界的彼方的核心去拯救女主 现
  • 搜索学习心得

    在学习了众多搜索的方式后 不由感慨 啊 太巨了 今天huayucaiji我就给大家讲一讲C 搜索的心得吧 深度优先搜索 广度优先搜索 迭代加深搜索 一个一个讲吧 深度优先搜索 深度优先搜索 下简称 深搜 简称DFS 是简洁明了的搜索方式 以
  • Voting【Codeforces 1251 E1 && E2】【贪心】

    Educational Codeforces Round 75 Rated for Div 2 E2 Now elections are held in Berland and you want to win them More preci
  • 层序遍历与BFS广度(宽度)遍历搜索算法(C++)

    算法竞赛 file author jUicE g2R qq 3406291309 彬 bin 必应 一个某双流一大学通信与信息专业大二在读 brief 一直在算法竞赛学习的路上 copyright 2023 8 COPYRIGHT 原创技术
  • 图论 笔记

    关于存图 如果是有权值的边 可以用pair define pii pair
  • HDU--1242:Rescue (BFS)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1242 2 易错点 可能存在多个朋友 即多个map 中有多个 r 所以起始点为Angel的位置 最短时间为到达最近的朋友的时间 3 源代码 H
  • 【算法学习笔记】17:DFS与BFS

    1 DFS 深度优先搜索常用于解决需要给出所有方案的问题 因为它的搜索顺序就是能够得到一个完整的搜索路径 方案 后回退再去搜索其它的方案 1 1 例题 排列数字 由于要求所有排列的方案 可以每次从 1 n 1 n 1 n里拿一个数字 然后记
  • PowerOJ2512: 小红灌溉【染色】

    题目链接 划重点 每个有菜的点只能浇一次且恰好一次 所以意思就是 譬如某个菜的位置是 x y 那么 行x 列y的浇水方案只能使用其中的一个 以此类推 我们给每个有蔬菜的位置的 x y 的x点与y点链接一条无向边 代表x和y只能选择其中的一个
  • 1096C - Polygon for the Angle-几何-性质

    思路 根 据 几 何 性 质 正 多 边 形 所 有 三 个 点组成的 角 都 是最小角的倍数 然后根据内角公式 可以求出 正多边形 最小角为 多边形内角 n 2 然后 打表发现 180边形最小角为1 最大角 178 所以 只有 179无法
  • Codeforces#808(Div.2)A-D题解

    目录 A Difference Operations B Difference of GCDs C Doremy s IQ D Difference Array A Difference Operations Problem A Codef
  • LeetCode_BinaryTree_1129. Shortest Path with Alternating Colors 颜色交替的最短路径【BFS求最短路径】【java】【中等】

    一 题目描述 英文描述 You are given an integer n the number of nodes in a directed graph where the nodes are labeled from 0 to n 1
  • 1600*C. Slava and tanks(思维)

    解析 如果n为奇数 则偶数位为奇数位少 1 则先轰炸偶数位 再轰炸奇数位 再一次轰炸偶数位 如果n为偶数 则任意顺序 于是无论奇偶 全部按照 偶 奇 偶 轰炸 则总次数为 n n 2 下取整 include
  • 深度、广度优先搜索

    文章目录 二 图的遍历 2 1 深度优先搜索 DFS DFS森林 应用 2 2 广度优先搜索 BFS 基本操作 应用 二 图的遍历 2 1 深度优先搜索 DFS DFS森林 Vertextype GetVex ALGraph G int v
  • 1600*D. Road Map(数学

    解析 记录每个点的父节点和子节点 从新的根节点开始遍历 遍历所有的非父结点即可 include
  • 【codeforces】 ZeptoLab Code Rush 2015 A,B,C,D,E题解

    D E统统FST 差一点就飞升了 A King of Thieves 给你一张地图 让你从某个 开始跳等步长的四次 如果均在 则输出yes 否则输出no 枚举起始点和步长直接做就可以了
  • 仙岛求药 —— dfs 与 bfs求解

    样例输入1 8 8 样例输出1 10 样例输入2 9 6 样例输出2 1 dfs ps 使用dfs会运行超时 30组测试数据只能通过部分 其实这种最短路径 最少操作的问题最好还是靠bfs解决 import java util Scanner
  • 1300*C. Page Numbers

    解析 注意单个数的情况 include
  • Codeforces Round 915 (Div. 2) A-F(补题&补写法)

    A Constructive Problems 签到 题解 输出max x y t int input for in range t u v map int input split print max u v B Begginer s Ze

随机推荐

  • 浅谈 qmake 之 shadow build

    shadow build shadow build 是什么东西 就是将源码路径和构建路径分开 也就是生成的makefile文件和其他产物都不放到源码路径 以此来保证源码路径的清洁 这不是qmake独创的东西 cmake中早就使用这个东西了
  • 性能测试_Day_10(负载测试-获得最大可接受用户并发数)

    目录 如何理解负载测试 如何实现负载测试 jpgc Standard Set插件安装 jpgc Standard Set使用方法 负载测试分析指标 获得最大可接受用户并发数 区间值 负载测试分析指标 获得最大可接受用户并发数 真实值 负载测
  • 阅读论文《Deep Bilateral Learning for Real-Time Image Enhancement》

    这是2017 siggraph的一篇论文 寒假boss让我看这篇论文我没怎么看懂 最近在公司实习 发现该论文的成果已经移到手机端上了 效果还非常不错 这里我重新温习了一下这篇论文 发现有许多可以借鉴的地方 是一篇非常不错的论文 这里重新叙述
  • 我碰到avs错误

    1 写好的avs脚本用播发器不能播放 并且报unexpected chatacter 错误 解决办法 1 尽管avs支持汉语文件路径 但是仍要确认标点符号是否为英文状态下 2 将AVS脚本用记事本打开 重新存为并把编码格式修改成ASNI格式
  • 数值计算方法python实现

    包括 泰勒级数展开 差分逼近微分 二分法求解 试位法求解 迭代法求根 牛顿法求根 正割法 贝尔斯托法多项式求跟 多项式回归 牛顿差商插值 拉格朗日插值法 三次样条插值法 二次样条插值法 高斯消元法 求解线性代数方程组 代码在我的github
  • 事件循环与线程 一

    初次读到这篇文章 译者感觉如沐春风 深刻体会到原文作者是花了很大功夫来写这篇文章的 文章深入浅出 相信仔细读完原文或下面译文的读者一定会有收获 由于原文很长 原文作者的行文思路是从事件循环逐渐延伸到线程使用的讨论 译者因时间受限 暂发表有关
  • SnowFlake 算法

    SnowFlake 算法 1 介绍 是 Twitter 开源的分布式 id 生成算法 核心思想 使用一个 64 bit 的 long 型的数字作为全局唯一 id 2 结构 0 0001000000 0000010000 0001000100
  • KVM架构与原理详解

    1 KVM架构 KVM 基本上有两个组件构成 1 kvm 驱动 现在已经是Linux内核的一个模块了 它的作用主要是负责虚拟机的创建 虚拟内存的分配 虚拟CPU寄存器的读写和虚拟cpu的运行 2 另一个组件是 Qemu QEMU是一个通用的
  • Wsl2 Ubuntu18.04图形化界面,亲测成功

    Wsl2 Ubuntu18 04图形化界面 亲测成功 Windows端 Linux端 最后 抖抖索索搞了两天 差点Windows系统都重装 终于搞成功了 参考文献 一定要看 非常感谢这个哥们 成功搞出来了 Windows端 powershe
  • ThreadLoacl

    目录 三 ThreadLoacl 基础 二 InheritableThreadLocal 三 TransmittableThreadLocal 三 ThreadLoacl 基础 在Java的多线程编程中 为保证多个线程对共享变量的安全访问
  • 数据库配置时useUnicode=true&characterEncoding=UTF-8

    数据库连接时经常会写到 jdbc url jdbc mysql localhost 3306 db1 useUnicode true characterEncoding UTF 8 添加的作用是 指定字符的编码 解码格式 例如 mysql数
  • mvvm设计模式总结

    要了解mvvm 首先要了解mvc和mvp 我们也先简单说一下mvc和mvp MVC MVC全名是Model View Controller 是模型 model 视图 view 控制器 controller 的缩写 一种软件设计典范 用一种业
  • HyperLedger Fabric实战(一):基础环境构建

    1 简介 本文档说明了HyperLedger Fabric 1 4 0版本的区块链网络搭建所需的基本环境组件以及安装流程 最后再记录了安装过程中可能会遇到的一些问题 采用的操作系统为ubuntu 18 04 具有参考价值的网站 Hyperl
  • PAT初级1015德才论(C++)

    PAT初级1015德才论 C 代码 include
  • FreeRtos队列,队列集合学习使用

    我们都知道队列可以进行消息的管理 比如在一个task中发消息 另一个task监听队列中是否有消息 这样比读flag的效率要高很多 更好的利用资源 一 介绍一下接下来需要使用到的接口函数 创建队列 使用的是xQueueCreate uxQue
  • Redis-入门与springboot整合

    Redis入门 一 Redis基础命令 二 常用数据类型 1 String类型 2 List类型 3 Set集合 4 hash集合 5 Zset集合 三 Redis发布和订阅 四 新数据类型 1 Bitmaps 2 HyperLogLog
  • Java常用类:System类

    文章目录 System类概述 1 arraycopy 方法 概述 语法 举例 2 currentTimeMillis 方法 概述 语法 举例 3 gc 方法 概述 语法 举例 4 exit int status 方法 概述 语法 举例 Sy
  • openwrt18.06.4配置strongswan对接山石网科(hillstone)记录①

    首先感谢https blog csdn net d9394952 article details 90734469 原贴作者 摸索了一个礼拜 将过程记录如下 首先将路由器连上网 更新opkg root OpenWrt ping www ba
  • aivms--CentOS7.6安装/JDK1.8/ThingsBoard CE /PostgreSQL

    先决条件 yum install y nano wget yum install y https dl fedoraproject org pub epel epel release latest 7 noarch rpm 1 安装JDK8
  • Catowice City【Codeforces 1248 F】【BFS】

    Codeforces Round 594 Div 2 F 一开始是听闻有人说这是一道Tarjan好题 然后就点进来做了 但是想来想去 却想了个另类的法子 我们可以看到 如果N个人都要选择的话 那么每个人都只能是审判者 或者是参赛者 所以 我