当前位置: 首页 > news >正文

网站开发文档百度文库网站友链查询接口

网站开发文档百度文库,网站友链查询接口,软件编程,网站建设预付费入什么科目文章目录 一、题目排序题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 提示 二、题解基本思路:代码 一、题目 排序 题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的…

文章目录

  • 一、题目
  • 排序
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 样例 #2
      • 样例输入 #2
      • 样例输出 #2
    • 样例 #3
      • 样例输入 #3
      • 样例输出 #3
    • 提示
  • 二、题解
    • 基本思路:
    • 代码


一、题目

排序

题目描述

一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列 A , B , C , D A,B,C,D A,B,C,D 表示 A < B , B < C , C < D A<B,B<C,C<D A<B,B<C,C<D。在这道题中,我们将给你一系列形如 A < B A<B A<B 的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序。

输入格式

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

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

输出格式

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

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

若根据前 x x x 个关系即发现存在矛盾(如 A < B , B < C , C < A A<B,B<C,C<A A<B,B<C,C<A),输出

Inconsistency found after x relations.

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

Sorted sequence cannot be determined.

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

样例 #1

样例输入 #1

4 6
A<B
A<C
B<C
C<D
B<D
A<B

样例输出 #1

Sorted sequence determined after 4 relations: ABCD.

样例 #2

样例输入 #2

3 2
A<B
B<A

样例输出 #2

Inconsistency found after 2 relations.

样例 #3

样例输入 #3

26 1
A<Z

样例输出 #3

Sorted sequence cannot be determined.

提示

2 ≤ n ≤ 26 , 1 ≤ m ≤ 600 2 \leq n \leq 26,1 \leq m \leq 600 2n26,1m600

二、题解

基本思路:

  • 很明显这是一道拓扑排序的题,基本是是个模板题,考察的是对拓扑排序得理解。
  • 输出结果有三种,再每次输入一对关系后进行拓扑排序判断
  • 一:拓扑序列结果为n个元素且最长链也得是n
  • 二:图中不能有环,有环即存在矛盾。而拓扑排序可以判断一个图中有没有环,当拓扑序列的长度不是已读入元素的个数时,说明有环。
  • 三:在输入m个关系后,前俩个都不是,说明还没确定关系

代码

#include<bits/stdc++.h>
using namespace std;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl "\n"
#define int long long
#define fi first
#define se second
#define repn(i,o,n) for(int i=o;i<=n;i++)
#define rep(i,o,n) for(int i=o;i<n;i++)
const int N = 30;
int n,m,d[N],rd[N];
vector<int> edge[N];
set<char> b;//存放当前读入的元素,用count函数来判断有没有读入 
bool flag=false;//还没找到答案 
//1.拓扑序列结果为n个元素且最长链也得是n 
//2.图中不能有环,有环即存在矛盾
//3.在输入m个关系后,拓扑序列的结果!=n inline void TopoSort(int num){queue<pair<int,int>> q;//第一个参数存得是点,第二个是以该节点为结尾得链得长度 vector<int> ans;//存放拓扑序列 int maxn=0;//找最长链 repn(i,1,n)//入度为0的点且已经读入了该点的点入队 if(!rd[i]&&b.count((char)(i+'A'-1))) q.push({i,1});while(!q.empty()){auto x=q.front();q.pop();ans.push_back(x.fi);//拓扑序列每个节点出队一次 for(auto y:edge[x.fi])if(--rd[y]==0){q.push({y,x.se+1});maxn=max(maxn,x.se+1); //找到最长链 }}if(maxn==n){//最长链为n个元素说明已经确定了n个元素的顺序 cout<<"Sorted sequence determined after "<<num<<" ";cout<<"relations: ";rep(i,0,ans.size()){cout<<(char)(ans[i]+'A'-1);//输出拓扑序列 }cout<<'.'<<endl;//!!!注意还得输出个'.' flag=true; return ;}//cout<<ans.size()<<endl;if(ans.size()!=b.size()){cout<<"Inconsistency found after "; cout<<num<<" relations."<<endl;flag=true;return ;}
}void solve() {cin>>n>>m;repn(i,1,m) {string s;cin>>s;b.insert(s[0]),b.insert(s[2]);edge[s[0]-'A'+1].push_back(s[2]-'A'+1);++d[s[2]-'A'+1];repn(i,1,n)rd[i]=d[i];TopoSort(i);if(flag) return ;if(i==m){//i==m时,前两个都不是,说明还没确定关系 cout<<"Sorted sequence cannot be determined."<<endl;}}}signed main() {//IOS;int T=1;//cin>>T;while(T--) {solve();}return 0;
}
http://www.hrbkazy.com/news/27120.html

相关文章:

  • 网站怎样做的有吸引力百度网站推广教程
  • flash 做ppt的模板下载网站有哪些数字营销策划
  • 网站如何做好seo优化设计答案大全
  • 松北建设局网站seo入门培训学多久
  • 形容网站页面做的好的词语seo关键词查询排名软件
  • 新泰网站开发百度浏览器打开
  • 湖北网站设计制作价格站长统计app软件下载
  • 网络课程网站建设市场调研分析
  • 网站的ftp上传地址代运营套餐价格表
  • 网站搜索怎么做php谷歌seo优化技巧
  • 太原网站的优化聊城网站seo
  • 网站开发定义名称cps游戏推广平台
  • 怎么生成网址链接重庆seo招聘
  • 网站建设 岗位职责人民网舆情数据中心官网
  • 苏州有什么好玩的游乐园手机优化软件下载
  • 建设银行山西招聘网站谷歌引擎搜索入口
  • 1号店网站网页特效百度seo外链推广教程
  • 网站备案是一年一次吗百度推广后台
  • 设计wordpress主题下载seo查询优化
  • 企业网站图片上传河南疫情最新情况
  • 公司团队建设seo快速优化
  • 手表网站 欧米茄seo是什么单位
  • 网页美工用什么软件优化推广网站排名
  • 万网域名中文网站查询网络营销和网站推广的区别
  • 代码做网站的软件推广宣传方式有哪些
  • 做爰全过程免费的视频 网站seo是搜索引擎优化吗
  • 北京好的做网站的公司有哪些注册网站平台要多少钱
  • 设计之家网站怎么样关键词app
  • 建设门户网站的目的和需求今日新闻最新消息大事
  • 专业网站设计哪家好巨量算数数据分析入口