题目链接:

http://codeforces.com/problemset/problem/645/D

题意:

给定n个机器人的m个能力大小关系,问你至少要前几个大小关系就可以得到所有机器人的能力顺序。

分析:

拓扑+二分。

注意最终的顺序不能缺点,先把度为0的点入队,如果度为0的点的个数大于1,则说明至少有两个点的能力大小不确定,无法继续。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
vector<int>G[maxn];
int in[maxn], out[maxn];
int ef[maxn], et[maxn];
int n, m;
bool judge(int mid)
{
memset(in, 0 ,sizeof(in));
for(int i = 1; i <= n; i++)
G[i].clear();
for(int i = 0; i < mid; i++){
G[ef[i]].push_back(et[i]);
in[et[i]]++;
}
queue<int>q;
for(int i = 1; i <= n; i++){
if(!in[i]) q.push(i);
}
while(!q.empty()){
int u = q.front();q.pop();
if(q.size()) return false;
for(int i = 0; i < G[u].size(); i++){
int v = G[u][i];
in[v]--;
if(!in[v]) q.push(v);
}
}
return true;
}
int main (void)
{
cin>>n>>m;
for(int i = 0; i < m; i++){
scanf("%d%d", &ef[i], &et[i]);
}
int l = 0, r = m;
while(l < r - 1){
int mid = (l + 1 +r)/2;
if(judge(mid)) r = mid;
else l = mid;
}
if(r == m && !judge(m)) return cout<<-1<<endl,0;
else cout<<r<<endl;
return 0;
}

Codeforces 645D Robot Rapping Results Report【拓扑排序+二分】的更多相关文章

  1. CROC 2016 - Elimination Round (Rated Unofficial Edition) D. Robot Rapping Results Report 拓扑排序+二分

    题目链接: http://www.codeforces.com/contest/655/problem/D 题意: 题目是要求前k个场次就能确定唯一的拓扑序,求满足条件的最小k. 题解: 二分k的取值 ...

  2. codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)

    题目链接: D. Robot Rapping Results Report time limit per test 2 seconds memory limit per test 256 megaby ...

  3. CodeForces - 645D Robot Rapping Results Report(拓扑排序)

    While Farmer John rebuilds his farm in an unfamiliar portion of Bovinia, Bessie is out trying some a ...

  4. CodeForces 645D Robot Rapping Results Report

    二分,拓扑排序. 二分答案,然后进行拓扑排序检查,若某次发现存在两个或者两个以上入度为$0$的节点,那么不可行. #pragma comment(linker, "/STACK:102400 ...

  5. CROC 2016 - Elimination Round (Rated Unofficial Edition) D. Robot Rapping Results Report 二分+拓扑排序

    D. Robot Rapping Results Report 题目连接: http://www.codeforces.com/contest/655/problem/D Description Wh ...

  6. codeforces 645 D. Robot Rapping Results Report 二分+拓扑排序

    题目链接 我们可以发现, 这是一个很明显的二分+拓扑排序.... 如何判断根据当前的点, 是否能构造出来一个唯一的拓扑序列呢. 如果有的点没有出现, 那么一定不满足. 如果在加进队列的时候, 同时加了 ...

  7. CF #CROC 2016 - Elimination Round D. Robot Rapping Results Report 二分+拓扑排序

    题目链接:http://codeforces.com/contest/655/problem/D 大意是给若干对偏序,问最少需要前多少对关系,可以确定所有的大小关系. 解法是二分答案,利用拓扑排序看是 ...

  8. 【CF645D】 Robot Rapping Results Report(拓扑排序,二分)

    题意:有一张N点M边的有向图,求最小的K使根据前K条边就能够确定图是否有唯一的拓扑序, 若没有唯一拓扑序输出-1 思路:二分答案再拓扑排序,以入度为0的节点作为新的一层,若某一层的节点个数<&g ...

  9. 【【henuacm2016级暑期训练】动态规划专题 O】Robot Rapping Results Report

    [链接] 我是链接,点我呀:) [题意] 让你确定一个最小的k 使得1..k这些比赛的结果能够推导出所有人之间的实力大小 [题解] 如果关系越多.那么就越能确定所有人之间的大小关系. (多一点也能唯一 ...

随机推荐

  1. 07/29/2013 02:10:02 AM - CMDPHP: Poller[0] Host[6] DS[10] WARNING: Result from SNMP not valid. Partial Result: U

    snmpwalk -c public -v2c  客户端ip地址  自定义的oid  能取到数据,但是服务器端就是图片一片空白 rrdtool fetch 文件名.rrd 查看到的全都是nan cac ...

  2. UI常用字体定义和继承的实例,ResearchKitCode

    #import <UIKit/UIKit.h> @interface UIFont (APCAppearance) + (UIFont*) appRegularFontWithSize: ...

  3. JavaScript-基础类型和运算符

    JavaScript-基础类型和运算符 P02.稍微了解 1.js代码需要编写到script标签中 <script type="text/javascript"> 此处 ...

  4. Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/config/spring/applicationContext.xml]

    在搭建SpringMVC框架的时候遇到了这个问题 问题的原因: 就是没有找到applicatoincontext.xml这个文件, 因为idea自动生成的路径不正确 因此需要再web.xml里面, ( ...

  5. 设计模式:命令模式(Command Pattern)

    问题 某个类中需要定义一个方法,该方法要实现的功能不确定的,需要等到程序执行该方法的时候才确定下来. 例如:定义一个计算数组的方法,可能需要遍历输出数组,也有可能是需要对数组中元素求和. 解决方案 按 ...

  6. TWaver可视化编辑器的前世今生(三)Doodle编辑器

    插播一则广告(长期有效)TWaver需要在武汉招JavaScript工程师若干要求:对前端技术(JavasScript.HTML.CSS),对可视化技术(Canvas.WebGL)有浓厚的兴趣基础不好 ...

  7. IDEA ctrl+alt+L 格式化快捷键无效时解决

    这几天发现自己Intellij IDEA ctrl+alt+L格式化代码无效 设置里面按照快捷键搜索 按了 ctrl+alt+L 也没反应 但是我设置的确实是默认的 ctrl+alt+L 最后终于找到 ...

  8. 7. ENGINES

    7. ENGINES ENGINES表提供有关存储引擎的信息. 这对于检查是否支持存储引擎或查看默认引擎是什么特别有用. INFORMATION_SCHEMA Name SHOW Name ENGIN ...

  9. logging日志模块配置

    logging日志模块 日志级别 日志一共分成5个等级,从低到高分别是: 1)DEBUG 2)INFO 3)WARNING 4)ERROR 5)CRITICAL 说明: DEBUG:详细的信息,通常只 ...

  10. 初识Web框架

    一.Web框架本质 Python的Web框架分为两类: 通过socket自己写程序,自己处理请求: 基于Wsgi(Web Server Gateway Interface:Web服务网关接口),处理请 ...