P1347 排序
创始人
2025-05-30 16:06:40
0

题目描述

一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列 A,B,C,D 表示A

输入格式

第一行有两个正整数 n,m,n 表示需要排序的元素数量,2≤n≤26,第 1 到 n 个元素将用大写的 A,B,C,D… 表示。m 表示将给出的形如A

接下来有 m 行,每行有 3 个字符,分别为一个大写字母,一个 < 符号,一个大写字母,表示两个元素之间的关系。

输出格式

若根据前 xx 个关系即可确定这 nn 个元素的顺序 yyy..y(如 ABC),输出

Sorted sequence determined after xxx relations: yyy...y.

若根据前 xx 个关系即发现存在矛盾(如A

Inconsistency found after x relations.

若根据这 m 个关系无法确定这 n 个元素的顺序,输出

Sorted sequence cannot be determined.

(提示:确定 nn 个元素的顺序后即可结束程序,可以不用考虑确定顺序之后出现矛盾的情况)

输入输出样例

输入 #1复制

4 6
A 

输出 #1复制

Sorted sequence determined after 4 relations: ABCD.

解析:

这道题第一眼想到的就是先后顺序,这是可以想到拓扑排序。

注意:char(i+"A") != A这是我在测试是总过不了的。字符串和字符要分辨

#include
using namespace std;
const int N = 50;
struct Node {int u;int val;Node(int u = 0,int val = 0):u(u),val(val){}
};
vector vec[N];
int in[N];
set s1;
int in1[N];
int n, m,k,have,sum,ans;
vector vv;
void topu() {vv.clear();queue q;for (int i = 0; i < 26; i++) {if (in1[i] == 0 && s1.count(i)) {q.push(Node(i, 1));sum++;vv.push_back(char(i + 'A'));}}while (!q.empty()) {int u = q.front().u;int val = q.front().val;q.pop();for (int i = 0; i < vec[u].size(); i++) {int v = vec[u][i];in1[v]--;if (in1[v] == 0) {sum++;q.push(Node(v, val + 1));ans = max(ans, val + 1);vv.push_back(char(v + 'A'));}}}if (ans == n) {printf("Sorted sequence determined after %d relations: ", k);for (int i = 0; i < vv.size(); i++) {cout << vv[i];}cout << ".";exit(0);}else if(sum != have) {printf("Inconsistency found after %d relations.", k);exit(0);}
}
int main() {cin >> n >> m;for (int i = 1; i <= m; i++) {string s;cin >> s;k = i;vec[s[0] - 'A'].push_back(s[2] - 'A');s1.insert(s[0] - 'A');s1.insert(s[2] - 'A');have = s1.size();in[s[2] - 'A']++;sum = 0;ans = 0;memcpy(in1, in, sizeof(in));topu();}printf("Sorted sequence cannot be determined.");return 0;
}

相关内容

热门资讯

好用的5款国产低代码平台介绍 一、云程低代码平台 云程低代码平台是一款基于springboot、vue.js技术的企业级低代码...
【数据结构第三章】- 队列 目录 一、队列的定义和特点 二、循环队列 2.1 - CircularQueue.h 2.2 - C...
如何将pdf文件压缩?pdf压... PDF是一种常见的文档格式,因为包括文本格式和图像,我们往往采用这种格式...
0X30数学知识 - 质数 定义: 若一个正整数无法被除了1和它自身之外的任何自然数整除,则称该数...
中方代表:俄乌冲突战场上武器数... 当地时间5月30日,中国常驻联合国副代表耿爽在安理会审议向乌克兰提供武器问题时发言指出,战场上武器数...
法网|冲击八强!女单第四轮,郑... 齐鲁晚报·齐鲁壹点 怀晓 郑钦文将向八强席位发起冲击。新华社发 连下3场击败帕芙柳琴科娃、阿朗戈和...
新华网国际看点|中国推动建立国... 5月30日,《关于建立国际调解院的公约》签署仪式在香港举行。国际调解院是个什么样的组织?它的运作机制...
在linux上搭建svn服务器 背景 将部署在windows上的svn服务器迁移到linux 准备工作 linux服务器安装svn ...
【Linux】Linux基本指... 前言: 紧接上期【Linux】基本指令(上)的学习...
【大数据之Hadoop】一、H... 1、Hadoop概念 特点“4V”:数据量大,数据产生速度快࿰...