二分,拓扑排序。

二分答案,然后进行拓扑排序检查,若某次发现存在两个或者两个以上入度为$0$的节点,那么不可行。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-6;
void File()
{freopen("D:\\in.txt","r",stdin);freopen("D:\\out.txt","w",stdout);
}
template <class T>
inline void read(T &x)
{char c=getchar(); x=0;while(!isdigit(c)) c=getchar();while(isdigit(c)) {x=x*10+c-'0'; c=getchar();}
}const int maxn=100010;
int n,m,u[maxn],v[maxn];
int h[maxn],sz,r[maxn];
struct Edge{int u,v,nx;}e[maxn];void add(int a,int b)
{e[sz].u=a; e[sz].v=b; e[sz].nx=h[a];h[a]=sz++;
}bool check(int x)
{memset(h,-1,sizeof h); sz=0;memset(r,0,sizeof r);for(int i=1;i<=x;i++) add(u[i],v[i]),r[v[i]]++;queue<int>Q;int num=0; for(int i=1;i<=n;i++) if(r[i]==0) Q.push(i),num++;if(num!=1) return 0;while(!Q.empty()){int top=Q.front(); Q.pop();num=0;for(int i=h[top];i!=-1;i=e[i].nx){r[e[i].v]--;if(r[e[i].v]==0){num++;Q.push(e[i].v);}}if(num>1) return 0;}return 1;
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++) scanf("%d%d",&u[i],&v[i]);check(4);int L=1,R=m,ans=-1;while(L<=R){int m=(L+R)/2;if(check(m)) ans=m,R=m-1;else L=m+1;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/zufezzt/p/5915999.html

CodeForces 645D Robot Rapping Results Report相关推荐

  1. Codeforces 1196C Robot Breakout

    https://codeforces.com/contest/1196/problem/C 题解:思维+交集 /* *@Author: STZG *@Language: C++ */ #include ...

  2. COMP0037 Coursework Investigating Path Planning Algorithms

    COMP0037 Coursework 1 Term 2, 2019 "Path Planning in a Known World" Investigating Path Pla ...

  3. Robotframework集成jenkins执行用例

    Robotframework+jenkins配置 假设我们完成了一个模块的用例设计,可是想晚上9点或凌晨运行,这时候该怎么实现呢?jenkins可以很好解决我们的疑难. Jenkins安装 这里简单说 ...

  4. ICRA2022 SLAM相关论文整理

    目录 视觉SLAM相关 线.面.3Dfeature 多相机系统 VIO+GPS 其他 数据集 三维重建 语义SLAM Special sensor Lidar相关 视觉SLAM相关 线.面.3Dfea ...

  5. COMP0037 Coursework

    COMP0037 Coursework 1 Term 2, 2019 "Path Planning in a Known World" Investigating Path Pla ...

  6. 多测师肖sir_高级金牌讲师_jenkins持续集成测试(001)

    Jenkins操作手册 =================================================================== 一.jenkins介绍 1.持续集成(C ...

  7. [转] ICRA2022 SLAM相关论文整理

    目录 视觉SLAM相关 线.面.3Dfeature 多相机系统 VIO+GPS 其他 数据集 三维重建 语义SLAM Special sensor Lidar相关 视觉SLAM相关 线.面.3Dfea ...

  8. 基于ISE的设计实现基础

    所谓实现(Implement)是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的.实现主要分为3个步骤:翻译(Transla ...

  9. 查看tomcat启动文件都干点啥---server对象

    在上一章查看tomcat启动文件都干点啥---Catalina.java中说道了构造Server,,这次尝试着说一下Tomcat中Server的内容,首先看一下org.apache.catalina. ...

  10. tomcat(14)服务器组件和服务组件

    [0]README 0.1)本文部分文字描述转自 "how tomcat works",旨在学习 "tomcat(14)服务器组件和服务组件" 的基础知识: 0 ...

最新文章

  1. 8月份Github上最热门的Python开源项目
  2. Android app按三层架构+MVC整理(重构)代码可行吗
  3. numpy matlab 索引不同,与Numpy相似的MATLAB数组索引
  4. The table(CF226D)
  5. Java GC系列(2):Java垃圾回收是如何工作的
  6. Eclipse下,LogCat(deprecated),显示不了内容,或者全部都是Unknown
  7. 手把手教你搭建机器学习+深度学习AI模型
  8. Android类似日历的翻转控件
  9. python 将字符串转换为字典
  10. MDK KEIL 下载算法程序 外部存储QSPI FLASH
  11. 量化7年1000万知与行,回测量化7年如果只每月定投5.4万到沪深300指数基金,能否实现7年1000万
  12. 【华人学者风采】胡事民 清华大学
  13. matlab 毕业论文题目,matlab论文题目
  14. 专题 | Innovus 2020: 创新,永无止境
  15. 如何使用WordPress建立亚马逊会员商店
  16. 数字孪生的思考 04 - 元宇宙的思考
  17. 小程序 正整数与char(character)的相互转换,十六进制与十进制相互转换
  18. 微型计算机简单并行接口实验心得,实验二简单并行接口.doc
  19. 突然悟到了“追求卓越”的真谛
  20. 浅谈PS CC 2020——适合新手学习的最新版软件

热门文章

  1. 做最好的自己(李开复)
  2. 史上最难的初等几何问题?分享一个参考答案
  3. 机器学习(Machine Learning)深度学习(Deep Learning)资料(下)
  4. 软件是计算机所需要的程序,软件是指电脑运行所需要的各种程序及其有关资料.doc...
  5. 太原市山大附中2021年高考成绩查询,太原40所高中高考喜报汇总!
  6. 想自己搭建服务器,永久运行网站?一个U盘大小的树莓派就够了!
  7. 六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)
  8. C语言编程>第八周 ③ 请编写一个函数void fun(char orig[],char result[],int flg),其功能是:删除一个字符串中指定下标的字符。其中,orig指向……
  9. [附源码]SSM计算机毕业设计小型银行贷款管理系统JAVA
  10. PropertyBeanUtils.copyProperties(dest, orig)