Codeforces1019C


题意:一张无自环的有向图,请找出一个点集Q,满足Q内的点不能互相有边,且Q内的点一定可以通过1次或2次移动,到达Q集合以外的任意一个点。

做法:思路神奇。做法就是编号小到大枚举选的点,然后把比他大的后继删除,再从大到小枚举,继续删除这被选中的点中互相有边的情况。正确性可以这么考虑,第一次选出的点保证了现在的点集通过一次移动即可到达任意其余的点,且所选点集中编号小的点与编号大的点之间没有边。第二次删除了编号大的到编号小的点之间的边,现在已经保证点集内部没有边了,考虑删除的点,我们可通过将他删除的那个点到达它及与它相连的不在点集中的点。

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
const int N = 1e6 + 7;
using namespace std;
int n,m,vis[N],cc;
vector<int> G[N];int main() {scanf("%d%d",&n,&m);int x,y;rep(i,1,m) scanf("%d%d",&x,&y),G[x].pb(y);rep(i,1,n) if(!vis[i]) {vis[i] = 1;for(auto v: G[i]) if(!vis[v]) vis[v] = -1;}per(i,n,1) if(vis[i]==1) {++cc;for(auto v: G[i]) vis[v]=-1;}printf("%d\n",cc);rep(i,1,n)if(vis[i]==1)printf("%d ",i);puts("");
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9471864.html

Codeforces1019C相关推荐

最新文章

  1. Kubernetes — 容器与镜像
  2. golang map 初始化 和 使用
  3. Fabric 架构和概念
  4. matlab 高维数组赋值,MATLAB之三(高)维数组的创建
  5. php首尾空格,php去除头尾空格的2种方法_PHP教程
  6. win8安装msi出现提示2503 2502的错误代码
  7. 管理你的代码——Git学习(一)
  8. mysql三-3:完整性约束
  9. CSS3透明背景表单
  10. MySQL使用详解--根据个人学习总结
  11. 大神程序员都懂英文翻译,而你却因英语不行遭拒?
  12. unset是不能清除保存在本地电脑上的cookie的,用于session就可以(弄了半天原来是这样)...
  13. WriteFile API简介
  14. HaaS EDU场景式应用学习 - 复古八音盒
  15. Linux与Windows命令行杀死端口命令
  16. 《Real-Time Rendering 4th Edition》全文翻译 - 第7章 阴影(下)7.7 ~ 7.10
  17. NBU备份之效率提升
  18. PySpark——随机森林分类案例
  19. 一键获取主图设计模板的工具平台
  20. cp11_15_TradingStrategies(dataframe.plot.scatter)

热门文章

  1. 拆分路径 java_JAVA 类文件中的路径如何拆分和替换
  2. 好用的平板电脑_平板选择华为M6,这里有几点建议
  3. 算法设计与分析——递归与分治策略——最接近点对问题
  4. 7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀
  5. [JavaWeb-MySQL]多表查询(内连接,外连接,子查询)
  6. [Java基础]ArrayList集合常用方法
  7. [蓝桥杯2015决赛]奇怪的数列-双指针+模拟
  8. Minimum Inversion Number HDU - 1394(求一个数字环的逆序对+多种解法)
  9. [object detection] TypeError: can't pickle dict_values objects
  10. A. Slackline Adventure(思维 + 莫比乌斯)(2018-2019 ACM-ICPC Brazil Subregional Programming Contest)