CodeForces 645D Robot Rapping Results Report(二分+拓扑排序)
来源:互联网 发布:用淘宝联盟被发现了 编辑:程序博客网 时间:2024/05/17 23:48
题意:有很多机器人,其中如果1号打败2号,2号打败3号,那么1号也可以打败3号,给你m场比赛的结果,问最少需要知道前几场就可以确定机器人的排名
思路:二分答案,然后拓扑排序看看是否成一条直线即可
#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 100001#define LL long longint cas=1,T;int n;vector<int>G[maxn];int in[maxn];int e[maxn],e1[maxn];bool topo(int m){memset(in,0,sizeof(in));for (int i = 0;i<=n;i++)G[i].clear();for (int i = 1;i<=m;i++){G[e[i]].push_back(e1[i]);in[e1[i]]++;}queue<int>q;int sum = 0;for (int i = 1;i<=n;i++)if (in[i]==0)q.push(i);while (!q.empty()){int u = q.front();q.pop();if (q.size())return false;sum++;for (int i = 0;i<G[u].size();i++){int v = G[u][i];if (--in[v]==0)q.push(v);}}return true;//return sum==n;}int main(){ int k;while (scanf("%d%d",&n,&k)!=EOF){ for (int i = 1;i<=k;i++)scanf("%d%d",&e[i],&e1[i]);int l=1,r=k;int ans = -1;while (l<=r){ int m = (l+r)/2;if (topo(m))r=m-1,ans=m;elsel=m+1;}printf("%d\n",ans);}//freopen("in","r",stdin);//scanf("%d",&T);//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}
0 0
- Codeforces 645D Robot Rapping Results Report【拓扑排序+二分】
- CodeForces 645D Robot Rapping Results Report(二分+拓扑排序)
- CodeForces 645 D.Robot Rapping Results Report(二分+dfs)
- (CROC 2016 - Elimination Round (Rated Unofficial Edition))D. Robot Rapping Results Report(二分+拓扑排序)
- Codeforces 645D Robot Rapping Results Report 【dp】
- codeforces 645 D Robot Rapping Results Report 【树形dp】
- 【CROC 2016 - Elimination RoundD】【二分答案orSet】Robot Rapping Results Report 最早多条边出现可以完成唯一拓扑序
- codeforces 515d 拓扑排序/二分图
- Codeforces 274D Lovely Matrix(拓扑排序+建图)
- Codeforces 412D Giving Awards(拓扑排序)
- Codeforces Round #292 (Div. 2) -- D. Drazil and Tiles (拓扑排序)
- Codeforces Round #292 (Div. 2) -- D. Drazil and Tiles (拓扑排序)
- codeforces 886D. Restoration of string (字符串处理+类拓扑排序)
- Codeforces 515D - Drazil and Tiles (拓扑排序)
- Codeforces Round #292 (Div. 2)C,D拓扑排序
- codeforces#292-D. Drazil and Tiles-暴力/拓扑排序
- CodeForces-711D Directed Roads(拓扑排序+组合数)
- 拓扑排序+二分
- 从根本解决“Call to undefined function Think\imagecreate()”
- 第五周项目2:游戏中的角色类(1)
- wordpress如何插入自定义的微博秀
- C语言第十篇:循环语句练习
- HDU 3068 Manacher 模版题
- CodeForces 645D Robot Rapping Results Report(二分+拓扑排序)
- 按钮
- 求屏幕分辨率px
- Android获得线性渐变某点的颜色
- 分析system_call中断处理过程
- redis Java使用例子
- 时钟
- 冒泡排序
- java.lang.NoSuchMethodException 的解决方法们(转)