其实就是检查第i 跟 i+1 序列是否合法
合法就不理它
如果不合法再变一下
最后再拓补检查一下构造出的解是否合法

#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <queue>
#include <cstdio>
#include <map>
#include <set>
#include <utility>
#include <stack>
#include <cstring>
#include <cmath>
#include <vector>
#include <ctime>
#include <bitset>
using namespace std;
#define pb push_back
#define sd(n) scanf("%d",&n)
#define sdd(n,m) scanf("%d%d",&n,&m)
#define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define sld(n) scanf("%lld",&n)
#define sldd(n,m) scanf("%lld%lld",&n,&m)
#define slddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k)
#define sf(n) scanf("%lf",&n)
#define sff(n,m) scanf("%lf%lf",&n,&m)
#define sfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k)
#define ss(str) scanf("%s",str)
#define ans() printf("%d",ans)
#define ansn() printf("%d\n",ans)
#define anss() printf("%d ",ans)
#define lans() printf("%lld",ans)
#define lanss() printf("%lld ",ans)
#define lansn() printf("%lld\n",ans)
#define fansn() printf("%.10f\n",ans)
#define r0(i,n) for(int i=0;i<(n);++i)
#define r1(i,e) for(int i=1;i<=e;++i)
#define rn(i,e) for(int i=e;i>=1;--i)
#define rsz(i,v) for(int i=0;i<(int)v.size();++i)
#define szz(x) ((int)x.size())
#define mst(abc,bca) memset(abc,bca,sizeof abc)
#define lowbit(a) (a&(-a))
#define all(a) a.begin(),a.end()
#define pii pair<int,int>
#define pli pair<ll,int>
#define pll pair<ll,ll>
#define mp(aa,bb) make_pair(aa,bb)
#define lrt rt<<1
#define rrt rt<<1|1
#define X first
#define Y second
#define PI (acos(-1.0))
#define sqr(a) ((a)*(a))
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000000+7;
const double eps=1e-9;
const int inf=0x3f3f3f3f;
const ll infl = 10000000000000000;
const int maxn=  100000+10;
const int maxm = 40000+10;
//Pretests passed
int in(int &ret)
{char c;int sgn ;if(c=getchar(),c==EOF)return -1;while(c!='-'&&(c<'0'||c>'9'))c=getchar();sgn = (c=='-')?-1:1;ret = (c=='-')?0:(c-'0');while(c=getchar(),c>='0'&&c<='9')ret = ret*10+(c-'0');ret *=sgn;return 1;
}vector<int>g[maxn],num[maxn];
bool error;
int c[maxn];
void dfs(int u)
{int sz = g[u].size();r0(i,sz){int v = g[u][i];if(c[v]==2)error =1;else if (c[v]==0) c[v] = 1 , dfs(v);}
}
int main()
{
#ifdef LOCALfreopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
#endif // LOCALint n,m;sdd(n,m);r1(i,n){int x;sd(x);while(x--){int u;sd(u);num[i].pb(u);}}r1(i,n-1){int sz = num[i].size();int sz2 = num[i+1].size();int j = 0;for(j = 0 ; j<sz&&j<sz2; ++j)if(num[i][j]!=num[i+1][j])break;int a = num[i][j] , b = num[i+1][j];if(j==sz2||j==sz){if(sz>sz2)error = 1;}else if(a<b)g[b].pb(a);else if(c[a]==2||c[b]==1)error = 1;else c[a] =1 , c[b] = 2;}r1(i,m){if(c[i]==1)dfs(i);}if(error)return 0*printf("No");puts("Yes");vector<int>o;r1(i,m)if(c[i]==1)o.pb(i);int ans = o.size();ansn();r0(i,ans)printf("%d ",o[i]);return 0;
}

Codeforces Round #441 (Div. 1, by Moscow Team Olympiad) C. National Property CF875C相关推荐

  1. Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)

    A题:一个三角形,一开始在C点,给边长a,b,c问上面走n-1次走多少步. ???为什么会写错??? #include<stdio.h> #include<string.h> ...

  2. Codeforces Round #441 Div. 2题解

    A.直接判断相邻的边是不是最短边 是就来回走 不然就走一条第二的然后再来回走 #include<cstdio> #include<cstring> #include<al ...

  3. C. Tyler and Strings(组合数学,树状数组维护前缀和)(Codeforces Round #775 (Div. 1, based on Moscow Open Olympiad i)

    对我来说比较困难的一题了,尝试着自己写了一下,调不出来遂放弃. Codeforces Round #775 (Div. 1, based on Moscow Open Olympiad in Info ...

  4. Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训

    Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)简训 导语 涉及的知识点 题目 A Game B ...

  5. Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,让你计算 n≤4e5,a≤1e7n\le 4e5,a\le 1e7n≤4e5,a≤1e7 思路: 首先这个式子是n2n^2n ...

  6. Codeforces Round #756 (Div. 3)

    Codeforces Round #756 (Div. 3) A. Make Even 思路:如果末尾是偶数,不需要操作:如果开头是偶数,一次操作,即全翻转:如果开头和末尾都是 奇数,判断里面是否有偶 ...

  7. Codeforces Round #579 (Div. 3) E.Boxers

    Codeforces Round #579 (Div. 3) E.Boxers 题目链接 There are n boxers, the weight of the i-th boxer is ai. ...

  8. Codeforces Round #604 (Div.2)

    Codeforces Round #604 (Div.2) 2019/12/5 22:35--2019/12/6 00:35 Codeforces Round #604 (Div.2) A. Beau ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. 解决在SQL Server 2000的存储过程不能调试
  2. 第01章 初识Mysql
  3. Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期
  4. 运维少年系列 python and cisco (1)
  5. python批量合并csv_如何在Python中通过多个列合并两个CSV文件
  6. Mac查看Python安装路径和版本
  7. 【分享】浅析Quora的技术架构
  8. 如何用JAVAC一次性编译多个包下的JAVA文件 ;JAVA和JAVAC 命令行;java 带有包名编译并运行,附带外部依赖jar包运行
  9. 安装java虚拟机_JAVA虚拟机的安装以及JAVA的环境配置
  10. tomcat日志配置详解
  11. 在Windows 7中使用AppLocker限制对程序的访问
  12. UVALive4987(dp+贪心)
  13. detached entity passed to persist问题与解决方案
  14. Xposed框架初次见面-开发自己的Xposed插件
  15. “海大与我“ Scrum Meeting(第十周会议记录)
  16. 路飞项目整体流程(二)
  17. 修改战网服务器,战网该怎样改地区?
  18. 4.Eclipse中使用SVN
  19. 【IOS】自己写的一个舒尔特方格app
  20. SRPG Studio 教程(一) 创建游戏及引用素材

热门文章

  1. 计算机作文素材,语文最新作文素材.doc
  2. JSZip + FileSaver 实现Vue打包下载图片
  3. 铜厨具的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. ARTONE的艺术美学:为笔记本注入时尚灵魂
  5. 事务原理:ACID,CAP和BASE理论及分布式事务一致性案例
  6. JavaScript在控制台常见的报错信息
  7. 论文浏览(11) A Multigrid Method for Efficiently Training Video Models
  8. 鞍山钢铁学院计算机学院,辽宁科技大学(原鞍山钢铁学院)
  9. 前端百题斩【023】——赋值、浅拷贝、深拷贝大PK
  10. 前端开发的时候给js css 图片等加 v