博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 510C Fox And Names (拓扑排序)
阅读量:4956 次
发布时间:2019-06-12

本文共 1025 字,大约阅读时间需要 3 分钟。

<>

题目大意:

给你一些只由小写字母组成的字符串,现在按一定顺序给出这些字符串,问你怎样从重排字典序,使得这些字符串按字典序排序后的顺序如题目所给的顺序相同。

解题分析:

本题想到拓扑排序就好做了。就是枚举每个字符串,每个字符串和它前一个字符串寻找第一个不同的字符,然后前一个串的该字符向当前串的字符连一条有向边(注意判断后一个串是前一个串的子串的情况)。然后就是跑一遍拓扑排序,如果不冲突的话,就可构造出答案。

#include 
using namespace std;#define pb push_backstring str[110];vector
G[30];int ind[30];vector
ans;inline void TopoSort(){ queue
q; for(int i=0;i<26;i++){ if(!ind[i])q.push(i); } while(q.size()){ int u=q.front();q.pop(); ans.pb(u); ind[u]=-1; for(int i=0;i
>n; for(int i=1;i<=n;i++) cin>>str[i]; for(int i=2;i<=n;i++){ //枚举字符串 int len1=str[i-1].size(); int len2=str[i].size(); bool fp=false; for(int j=0;j
len2)return puts("Impossible"),0; //如果当前串是前一个串的子串 } TopoSort(); if(ans.size()<26)puts("Impossible"); else { for(int i=0;i

 

转载于:https://www.cnblogs.com/00isok/p/10713131.html

你可能感兴趣的文章
java反射机制剖析(二)— Class Loader
查看>>
走进C++程序世界------异常处理
查看>>
通过用户模型,对数据库进行增删改查操作。
查看>>
去除数组中重复的元素
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1988 Cube Stacking
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
Android------三种监听OnTouchListener、OnLongClickListener同时实现即其中返回值true或者false的含义...
查看>>
MATLAB实现多元线性回归预测
查看>>
Mac xcode 配置OpenGL
查看>>
利用sed把一行的文本文件改成每句一行
查看>>
使用Asyncio的Coroutine来实现一个有限状态机
查看>>
Android应用开发:核心技术解析与最佳实践pdf
查看>>
python——爬虫
查看>>
2.2 标识符
查看>>
孤荷凌寒自学python第五天初识python的列表
查看>>
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>