本来打算当打了个拓扑的板子

后来发现并不只是个板子

差不多 管他呢

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<algorithm>
#define rint register int
using std::queue;
using std::cout;
using std::endl;
template <class T> inline void read(T &X)
{
X=;int W=;char ch=;
while(!isdigit(ch))W|=ch=='-',ch=getchar();
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
X=W?-X:X;return;
}
int n,m,head[],CNT=,in[],IN[],cnt=,Cnt=,vis[],ans[];
struct node{int to,next;}edge[];
queue<int> q;
void add(int u,int v)
{
++in[v];
edge[++Cnt].to=v;
edge[Cnt].next=head[u];
head[u]=Cnt;
} int tp()
{
int pd=,pd2=;cnt=;
for(rint i=;i<=;++i)
{
IN[i]=in[i];
if(!IN[i] && vis[i])
{
if(!pd)pd=;
else pd2=;
q.push(i);
ans[++cnt]=i;
}
}
if(q.empty())return ;
while(!q.empty())
{
int u=q.front();q.pop();pd=;
for(rint i=head[u];i;i=edge[i].next)
{
--IN[edge[i].to]; if(!IN[edge[i].to])
{
if(!pd)pd=;
else pd2=;
q.push(edge[i].to);
ans[++cnt]=edge[i].to;
}
}
}
if(cnt!=CNT)return ;
if(pd2)return ;
return ;
}
int main()
{
read(n),read(m);
for(rint i=;i<=m;++i)
{
char a[];
scanf("%s",a);
int u=a[]-,v=a[]-;
add(u,v);
if(!vis[u])vis[u]=,CNT++;
if(!vis[v])vis[v]=,CNT++;
int tps=tp();
if(tps==)
{
printf("Inconsistency found after %d relations.",i);
return ;
}
if(cnt==n && !tps)
{
printf("Sorted sequence determined after %d relations: ",i);
for(rint j=;j<=cnt;++j)printf("%c",ans[j]+);
printf(".") ;
return ;
}
}
printf("Sorted sequence cannot be determined.");
return ;
}

<luogu1347>排序的更多相关文章

  1. luogu1347 排序

    题目大意 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列.给你一系列形如A<B的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序(能,矛盾,不确定).确定n个元素的顺序后 ...

  2. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  3. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  4. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  5. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  6. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  7. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  8. 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

  9. javascript排序

    利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...

随机推荐

  1. Paper Review: Epigenetic Landscape, Cell Differentiation 02

    I'll share another review paper about Epigenetic Landscape, it comes from Nature Review, published i ...

  2. rds分区实践

    1.查看分区情况 SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'tab ...

  3. CEO、COO、CFO、CTO、CIO是什么意思/?

    CEO Chief Executive Officer 首席执行官 COO Chief Operating Officer 首席运营官 CFO Chief Financial Officer 首席财务 ...

  4. liunx搭建配置

    预安装准备工具 yum -y install gcc gcc-c++ wget cmake 安装 软件存放目录: /lnmp/ 软件安装目录: /usr/local/ 1.下载安装PCRE wget ...

  5. Qt QRect与QRectF的区别

    一直在与QRect和QRectF打交道.甚至在使用过程中因为QRect而出现了致命的Bug.因为QRect在数据存储表示上有一个很大的“历史遗留问题”! QRect Class   也就是说,对于QR ...

  6. 第1章 MYSQL 体系结构和存储引擎

    一.定义数据库和实例 在集群的条件下,存在单个数据库对应多个实例 二.Mysql 体系结构 三.Mysql 存储引擎及各存储引擎之间的比较 命令:show engines; 四.连接 MySQL 4. ...

  7. mysql之存储过程(二)

    1.批量根据复杂的SQL查询结果插入到新表 DELIMITER && CREATE PROCEDURE settlePADTEST() begin        DECLARE c_s ...

  8. linux中常见压缩文件格式

    文件后缀名 说明 *.zip zip 程序打包压缩的文件 *.rar rar 程序压缩的文件 *.7z 7zip 程序压缩的文件 *.tar tar 程序打包,未压缩的文件 *.gz gzip 程序( ...

  9. iOS 部分API理解

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  10. 47)PHP,数据库多表连接

    https://www.w3cschool.cn/mysql/56ik1sqv.html