510C
510C
拓扑排序:将那些受影响的字母拓扑排序,其后的输出
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
queue<int>q;
int n;
vector<int>graph[];
string s[];
int mp[][];
int in[];
void toposort()
{
for(int i=;i<;i++)
if(!in[i])
{cout<<(char)(i+'a');q.push(i);}
// if(!flag){cout<<"Impossible"<<endl;return;}
while(!q.empty())
{
int u=q.front();q.pop();
for(int i=;i<graph[u].size();i++)
{
int v=graph[u][i];
in[v]--;
if(in[v]==){cout<<(char)(v+'a');q.push(v);}
}
}
for(int i=;i<;i++) if(in[i]==-)cout<<(char)(i+'a');
}
int main()
{
cin>>n;
if(n==){for(char c='a';c<='z';c++) cout<<c;return ;}
for(int i=;i<=n;i++)
cin>>s[i];
memset(in,-,sizeof(in));
for(int i=n;i>=;i--)for(int j=i-;j>=;j--)
{
int l=;
while(s[i][l]==s[j][l]&&l<=min(s[i].length(),s[j].length())) l++;
if(l==s[i].length())
{
cout<<"Impossible"<<endl;
return ;
}
if(l==s[j].length())continue;
mp[s[i][l]-'a'][s[j][l]-'a']=;
if(in[s[j][l]-'a']==-)in[s[j][l]-'a']=;
in[s[i][l]-'a']+=in[s[i][l]-'a']==-?:;
graph[s[j][l]-'a'].push_back(s[i][l]-'a');
}
for(int k=;k<;k++)
for(int i=;i<;i++)
for(int j=;j<;j++)
mp[i][j]+=mp[i][k]*mp[k][j];
for(int i=;i<;i++)
if(mp[i][i]){cout<<"Impossible"<<endl;return ;}
toposort();
return ;
}
510C的更多相关文章
- (CodeForces 510C) Fox And Names 拓扑排序
题目链接:http://codeforces.com/problemset/problem/510/C Fox Ciel is going to publish a paper on FOCS (Fo ...
- CodeForces 510C Fox And Names (拓扑排序)
<题目链接> 题目大意: 给你一些只由小写字母组成的字符串,现在按一定顺序给出这些字符串,问你怎样从重排字典序,使得这些字符串按字典序排序后的顺序如题目所给的顺序相同. 解题分析:本题想到 ...
- codeforce 510C Fox And Names(拓扑排序)
Fox And Names time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 【codeforces 510C】Fox And Names
[题目链接]:http://codeforces.com/contest/510/problem/C [题意] 给你n个字符串; 问你要怎么修改字典序; (即原本是a,b,c..z现在你可以修改每个字 ...
- Codeforces 510C (拓扑排序)
原题:http://codeforces.com/problemset/problem/510/C C. Fox And Names time limit per test:2 seconds mem ...
- Linux下多任务间通信和同步-信号
Linux下多任务间通信和同步-信号 嵌入式开发交流群280352802,欢迎加入! 1.概述 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式.信号可以直接进行用户空间进程和内核进程之间的 ...
- Codeforces510 C. Fox And Names
Codeforces题号:#510C 出处: Codeforces 主要算法:判环+拓扑 难度:4.2 思路分析: 要是把这道题联系到图上就很容易想了. 如何建图?由于最后要求名字满足字典序,所以不妨 ...
- 专题:CF图论杂题
题目是来自HZW的博客(构造题我是各种不会...) Solved 1 / 1 A CodeForces 500A New Year Transportation Solved 1 / 1 B Code ...
- 【操作系统】总结五(I/O管理)
输入输出管理本章主要内容: I/O管理概述(I/O控制方式.I/O软件层次结构)和I/O核心子系统(I/O调度概念.局速缓存与缓冲区.设备分配与回收.假脱机技术(SPOOLing)). 5.1 I/O ...
随机推荐
- oracle:sql函数
Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小 ...
- Java中的ReentrantLock和synchronized两种锁定机制的对比
问题:多个访问线程将需要写入到文件中的数据先保存到一个队列里面,然后由专门的 写出线程负责从队列中取出数据并写入到文件中. http://blog.csdn.net/top_code/article/ ...
- bzoj1050: [HAOI2006]旅行comf
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- Sonatype Nexus Maven仓库搭建和管理
安装 1. 从 http://www.sonatype.org/nexus/ 下载最新的 Nexus 压缩包, 现在已经不提供war包的下载 2. 解压到服务器目录, 例如我是放到/opt/nexus ...
- 03Spring_bean的创建和作用域以及生命周期
bean的三种创建方式: 方式一: 使用类构造器实例化对象 <!-- 方式一 使用构造器(无参数)实例化对象 --> <bean id="bean1" cla ...
- Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)
Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件) 前文介绍了通过 Safari 的 Web检查器,可以看到控制台输出的信息.但有时这样调试代码不太方便,如果在 ...
- codevs3143 二叉树的序遍历
难度等级:白银 3143 二叉树的序遍历 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点 ...
- 前端见微知著工具篇:Grunt实现自动化
转载说明 本篇文章为转载文章,来源为[前端福利]用grunt搭建自动化的web前端开发环境-完整教程,之所以转载,是因为本文写的太详细了,我很想自己来写,但是发现跳不出这篇文章的圈子,因为写的详尽,所 ...
- Adblock Plus for firefox
关于 Adblock Plus for firefox(以下简称 ABP)的一些笔记. 安装好 ABP,将如下代码保存为 html 文件,然后在 firefox 中打开: <p id=" ...
- Java面试知识点总结
本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有一定的Java基础:若您初涉 ...