POJ-1094 Sorting It All Out 解题报告

mac(apple silicon)arm64安装spm12详细教程 3.下载matlab runtime R2023b for macOS (macA64),注意必须下载这个,只下载matlab是不可以的。默认安装目录是/Applications/MATLAB/MATLAB_Runtime/R2023b。注意最后的命令,路径根据自己的matlab_runtime安装位置进行调整,然后就可以安装成功了。5. 解压spm12.zip,解压后将文件夹拖到应用程序下(Applications)2.下载spm12,这个版本可兼容mac芯片!6.打开mac终端,输入。 阅读详情

Description

An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that A < B, B < C and C < D. in this problem, we will give you a set of relations of the form A < B and ask you to determine whether a sorted order has been specified or not.

Input

Input consists of multiple problem instances. Each instance starts with a line containing two positive integers n and m. the first value indicated the number of objects to sort, where 2 <= n <= 26. The objects to be sorted will be the first n characters of the uppercase alphabet. The second value m indicates the number of relations of the form A < B which will be given in this problem instance. Next will be m lines, each containing one such relation consisting of three characters: an uppercase letter, the character "<" and a second uppercase letter. No letter will be outside the range of the first n letters of the alphabet. Values of n = m = 0 indicate end of input.

Output

For each problem instance, output consists of one line. This line should be one of the following three: 

Sorted sequence determined after xxx relations: yyy...y. 
Sorted sequence cannot be determined. 
Inconsistency found after xxx relations. 

where xxx is the number of relations processed at the time either a sorted sequence is determined or an inconsistency is found, whichever comes first, and yyy...y is the sorted, ascending sequence. 

Sample Input

4 6
A<B
A<C
B<C
C<D
B<D
A<B
3 2
A<B
B<A
26 1
A<Z
0 0

Sample Output

Sorted sequence determined after 4 relations: ABCD.
Inconsistency found after 2 relations.
Sorted sequence cannot be determined.


 
       题目链接:http://poj.org/problem?id=1094
       解法类型:拓扑排序
       解题思路:这几天看了下拓扑排序,于是就在POJ上找了一道题目练练手,一道很典型的拓扑排序题。建立一个邻接矩阵,然后深度搜索入度数为零的结点即可。但要做一些简单的剪枝,搜索到2个或者有回路就可以退出搜索了,这里一定要注意回溯!(我在这里被坑了= =!)。为了提高判断结点的入度数是否为零的效率,这里可以使用位运算,为了减小位运算的出错,最好写成宏定义。
       算法实现:
//STATUS:C++_AC_16MS_136K
#include<stdio.h>
#include<string.h>
#define get(u,v) (G[u]&(1<<v))     //位运算处理
#define put(u,v) (G[u]|=(1<<v))
const int MAXN=30;
char A[MAXN];
int topo_dfs(int cur);
int is_zero(int v);
int s,n,m,G[MAXN],map[MAXN],tot;
int main()
{
//	freopen("in.txt","r",stdin);
	int i,u,v,ok,result,w;
	char a,b,ch[5];
	while(~scanf("%d%d",&n,&m) && n)
	{
		tot=result=0;         //初始化
		memset(G,0,sizeof(G));
		memset(map,0,sizeof(map));
		getchar();

		for(i=0;i<m;i++){
			scanf("%c<%c\n",&a,&b);
			u=a-'A',v=b-'A';
			if(!get(u,v))put(u,v);       //位运算
			if(!map[u])map[u]=1,tot++;
			if(!map[v])map[v]=1,tot++;
			s=0;
			ok=topo_dfs(0);
			if(ok==-1){result=1;w=i+1;break;}
			else if(s==1){A[n]='\0';result=2;w=i+1;break;}
		}
		for(i++;i<m;i++)
			gets(ch);

		if(result==1)printf("Inconsistency found after %d relations.\n",w);    //按情况输出
		else if(result==2)printf("Sorted sequence determined after %d relations: %s.\n",w,A);
		else printf("Sorted sequence cannot be determined.\n");
	}
	return 0;
}

int topo_dfs(int cur)
{
	if(cur==n){s++;return 1;}
	if(s==2)return 2;    //有多个
	else if(cur==tot)return 3; //搜索完成
	int v,ok,t,ans;
	for(ok=0,v=0;v<n;v++){
		if( is_zero(v) && map[v] ){
			ok=1;
			t=G[v];      //位运算很方便的解决了赋值问题
			G[v]=0;
			map[v]=0;
			A[cur]=v+'A';
			ans=topo_dfs(cur+1);
			if(ans==-1)return -1;   //存在回路
			if(ans==2){G[v]=t;map[v]=1;return 2;}   //这里一定要注意剪枝和回溯
			if(ans==3){G[v]=t;map[v]=1;return 3;}   //这里一定要注意剪枝和回溯
			G[v]=t;
			map[v]=1;
		}
	}
	if(ok)return 0;
	else return -1;    //存在回路
}

int is_zero(int v)      //结点入度数是否为零
{
	for(int i=0;i<n;i++)
		if(get(i,v))return 0;
	return 1;
}

零基础快速学习 ABAP 读者意见反馈和下一步写作计划表 大家在学习教程过程中,如果有任何关于 SAP ABAP 开发方面想了解的内容,可以直接在教程各篇文章下评论留言,我会将大家的意见统一汇总到下面的表格,作为我更新教程的内容参考来源之一。 阅读详情

相关推荐

告别黑盒调试:用MMSegmentation可视化工具链,从训练到评估一目了然

本文介绍了如何利用MMSegmentation的可视化工具链,从训练到评估实现语义分割模型的透明化调试。通过整合日志分析、混淆矩阵、PR曲线等工具,开发者可以快速定位模型问题,优化性能。文章详细展示了训练曲线分析、性能剖析、混淆矩阵解读和PR曲线应用等关键步骤,帮助用户告别黑盒调试,提升模型开发效率。

weixin_29100927的博客 105

POJ 1094 (传递闭包 + 拓扑排序)

题目链接: POJ 1094 题目大意:有 1 ~ N 个大写字母,且从 A 开始依次 N 个。再给你 M 个小于的关系,比如 A < B ,让你判断三种可能: 1、在第 i 个关系罗列之后,是否可以满足使得这 N 个字母能递增关系。 2、在第 i 个罗列之后,是否会出现矛盾,例如 A > B,而在第 i 个状态出现后,B > A ,故矛盾。 3、如果 M...

diefen9380的博客 395

数字IC设计——功耗分析

功耗是数字IC芯片的一个重要指标

知识,既贵,又便宜。 9364

POJ 1094

 说明:代码学习于优秀的网友,注释是我写的  ,如果哪里有错误  ,欢迎指正 POJ 1094:题意:有一些未知数各不相等,给出一些两两比较的大小关系,问到第几个关系开始可以确定整体排序或出现矛盾,再或者所有关系都用过了也无法确定整体排序。 拓扑排序 的思想: 从图中取一个没有前驱的顶点输出,  从有向图中删去此顶点以及所有以它为尾的弧 。 要求是有向无环图,图中顶点是线性排列关

phperHe 488

【点云概述】什么是点云、来源、种类、特点、处理?

【点云概述】什么是点云、来源、种类、特点、处理?点云(point cloud)是空间中点的数据集,可以表示三维形状或对象,通常由三维扫描仪获取。点云中每个点的位置都由一组笛卡尔坐标 ( X , Y , Z ) (X, Y, Z) (X,Y,Z)描述,有些可能含有色彩信息 ( R , G , B ) (R, G, B) (R,G,B)或物体反射面强度(Intensity)信。

智慧空间实验室 9820

PCL RANSAC拟合空间圆【2026最新版】

RANSAC三维点云空间3D圆拟合。博客长期更新,本文最新更新时间为:2026年4月13日。代码在PCL1.15.0中测试通过

点云侠的博客 7455

POJ - 1094 Sorting It All Out(传递闭包)

POJ - 1094 Sorting It All Out #include<cstdio> #include<cstring> const int N = 26; int n,m; bool d[N][N],st[N]; int check() { for(int i=0;i<n;i++) if(d[i][i]) return 2; for(int i=0;i<n;i++) for(int j=0;j<i;j++) if(!d[i][j

00后的博客 320

OceanBase数据库LSM-Tree存储引擎深度解析:合并写入与压缩优化策略

OceanBase数据库采用创新的LSM-Tree架构设计,通过"基线-增量"分离存储实现高性能。内存中的MemTable处理写入,磁盘上的SSTable存储有序数据,利用多级缓存加速读取。写入时先写日志再更新内存,合并操作将增量数据整合为基线数据以优化查询性能。相比传统B+树引擎,OceanBase在写入吞吐、压缩效率和存储成本方面优势显著,特别适合写入密集型场景。合并操作作为核心机制,通过多种触发方式和执行策略平衡性能与资源消耗。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1342

poj 1094

Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22726   Accepted: 7859 Description An ascending sorted sequence of distinct values is one

sdjzujxc的专栏 1060

华为面试手撕真题【判断是ipv4还是ipv6地址】

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。

MISAYAONE的博客 1万+

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 760

POJ1094(拓扑排序)

POJ1094(拓扑排序) Sorting It All Out Description An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For example, the sorted sequence A, B, C, D implies that

shui2104的博客 369

Xilinx差分原语-IBUFGDS与OBUFGDS FPGA

它将差分信号转换为单端信号,并将其输入到FPGA的逻辑片上。它将单端信号转换为差分信号,并将其输出到FPGA的引脚。在FPGA设计中,差分信号是一种常见的信号传输方式,用于提高抗噪性和抑制共模噪声。Xilinx是一家知名的FPGA供应商,提供了许多差分原语,其中包括IBUFGDS和OBUFGDS。通过使用Xilinx的差分原语,如IBUFGDS和OBUFGDS,可以实现差分信号的输入和输出。这些差分原语提供了方便且可靠的接口,使得在FPGA设计中处理差分信号变得更加简单和高效。是差分输入信号的端口,

git_database727的博客 2096

POJ - 1094 Sorting It All Out 解题报告

大致题意: 输入 输入有多组数据。 每一组数据由其第一行的2个正整数n,m开始。 第一个正整数n代表有n个元素需要排序(2<=n<=26),这些元素一定是按照字母表顺序,从第一个字母(A)开始的n个大写字母。 第二个正整数m代表有m个关系将会在这组数据中被给出。 接下来有m行输入,每一行输入包含3个字符:一个大写字母,一个"<"符号,另一个大写字母。 所有输入的字母不会超出n...

qq_17078131的博客 302

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【原】 POJ 1094 Sorting It All Out 拓扑排序 解题报告

http://poj.org/problem?id=1094 方法: 每加入一条边就进行一次拓扑排序,从而找到符合条件的最少边数 拓扑排序的基本思想就是依次找到图中入度为0的节点,将该节点和其对应的边删除,这样就使得它的邻接节点的入度-1。反复循环这样做直到所有节点都从图中删除(都被编上拓扑编号),或者因为有环所以还剩下某些节点未被删除 Descrip...

ajiaxi111111的博客 203

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

poj 1094 Sorting It All Out 解题报告

题目链接:http://poj.org/problem?id=1094 题目意思:给出 n 个待排序的字母 和 m 种关系,问需要读到第 几 行可以确定这些字母的排列顺序或者有矛盾的地方,又或者虽然具体的字母顺序不能确定但至少不矛盾。这些关系均是这样的一种形式: 字母1 < 字母2   这道题目属于图论上的拓扑排序,由于要知道读入第几行可以确定具体的顺序,所以每次读入都需要进行拓扑排序来...

weixin_30877755的博客 74

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

拓扑排序 附POJ 1094 Sorting It All Out 解题报告

拓扑排序是针对有向无环图的概念,通常是用于将一些点进行拓扑排序之后形成一个序列能够形成先后的关系,所以拓扑排序可以用于解决点之间又先后关系的序列。         POJ1094这道题是说给你一些大小关系,问你是否可以确定这n个字符确定的先后顺序,于是对每一次加入边后,进行拓扑

Bright 1594

POJ - 1094 Sorting It All Out解题报告

Kahn····

薛崇祥的博客 1025

POJ 1094 Sorting It All Out 解题报告 (拓扑排序 BFS)

传送门:http://poj.org/problem?id=1094 这题看着好吓人的样子,其实不难,主要是用了拓扑排序的一些结论。本来是想用DFS做可能更方便……判断回路更直观一点,然而技艺不精不是很会,写了一大半接不下去了……以后想明白怎么写再上吧,一题多解嘛。 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;...

鶸Atlas的博客~~ 237

poj 1094 Sorting It All Out(拓扑排序)

http://poj.org/problem?id=1094 拓扑排序,有点坑。。 给出m个关系,在输入的同时判断在当前条件下是否有环,是否能形成唯一拓扑序列,或者是不确定。 此题要注意优先级,当在输入的过程中出现环或拓扑排序成功时可以直接输出,但当前驱结点不唯一时不能直接输出,因为后面的输入可能导致出现环,这时候就应该输出矛盾而不是拓扑序列不唯一了,所以判拓扑序列不唯一时应放在输入完毕

2059

POJ 1094 Sorting It All Out 拓扑排序

POJ 1094 Sorting It All Out 大意:给定A<B B<C形式关系若干,问能否构成严格的从小到大的排序 有许多坑点,首先,输出有三种形式: 在第x组序列给出时可以构成严格的排序abcd… 在第x组序列给出时出现矛盾 不能确定排序的序列 前两者的优先级高于第三者 我们每输入一组关系,都进行一次拓扑排序,判断关系是能严格排序,出现矛盾,还是不确定,一旦这组关系是严...

菜鸡的博客 162

[POJ 1094] Sorting It All Out

[题目链接] http://poj.org/problem?id=1094 [算法] floyed传递闭包 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <c...

99

G - Sorting It All Out POJ - 1094

G - Sorting It All Out  POJ - 1094  An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from smallest to largest. For exam...

nucleare的博客 276

Poj 1094 Sorting It All Out——拓扑排序

题目链接: http://poj.org/problem?id=1094 题目大意: 这个题目的难点就在于题目意思的理解。 有n个大写字母,并且告诉这n个大写字母的大小关系,要你对这n个大写字母进行排序。 解题思路: 但是,这个题目并不是等所有的输入结束之后判断,而是一边输入一边进行判断。 每次输入一组字母的关系之后,我们就需要更新原来的图。 如果原来的

sanmingzi3344的专栏 797

poj 图相关之1094Sorting It All Out

poj 图相关之1094Sorting It All Out Accepted 144K 0MS 测试数据

ziqi9216的博客 342

poj1094Sorting It All Out——拓扑排序

题目:http://poj.org/problem?id=1094 看到此题,首先觉得这是一种层层递进的关系,所以可以想到用拓扑排序; 就像人工排序,每次需要找到一个最小的,再找到新的最小的……所以用有向边代表小的元素到大的元素的关系,每次的入度为0的点就是最小的; 出现错误也就是出现了环,可以看做是拓扑排序过程后还有没有被排到的点,也就是怎样入度都不为0; 因为要输出哪一步,所...

aodan5477的博客 119
上一篇: POJ-1804 Eqs 解题报告
下一篇: POJ-2002 Squares 解题报告
angle555945
博客等级 码龄15年 66粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值