【拓扑排序】 Codeforces Round #290 (Div. 1) A Fox And Names
来源:互联网 发布:装修风格效果图软件 编辑:程序博客网 时间:2024/05/20 11:26
点击打开链接
给出N个单词 ,根据这N个单词的先后顺序,输出一个符合的字典序。
从首字母开始与其下一个单词的首字母比较,
若相同则需判定下一位,依次类推直至找到不同的,建边。
注意如果
abcde
abcd
这样是impossible。
#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <iostream>#include <algorithm>#include <sstream>#include <cmath>using namespace std;#include <queue>#include <stack>#include <set>#include <vector>#include <deque>#include <map>#define cler(arr, val) memset(arr, val, sizeof(arr))typedef long long LL;const int MAXN = 1100;const int MAXM = 140000;const int INF = 0x3f3f3f3f;const int mod = 1000000007;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int zimu=26;int n,vis[44];char ch[200][122];int mp[44][44],flag,b[44];int w[44],in[44];int hh(int i,int j,int l){ if(strlen(ch[j])<=l||strlen(ch[i])<=l) { if(strlen(ch[i])>strlen(ch[j])) flag=1; return 0; } int x=ch[i][l]-'a'; int y=ch[j][l]-'a'; if(x==y) hh(i,j,l+1); else { if(mp[y][x])//重了 flag=1; else mp[x][y]=1; } return 0;}int solve(){ for(int i=1; i<n; i++) hh(i,i+1,0);}int main(){ cin>>n; for(int i=1; i<=n; i++) cin>>ch[i]; cler(b,0);cler(mp,0);flag=0; solve(); if(flag) { puts("Impossible"); return 0; } for(int i=0; i<26; i++) for(int j=0; j<26; j++) if(mp[i][j]) b[j]++; int numb=0,j=0; for(int i=0; i<26; i++)//入度为0的点 { if(b[i]==0) w[numb++]=i; } while(j<numb) { int u=w[j]; for(int i=0; i<zimu; i++) { if(mp[u][i]) { b[i]--; mp[u][i]=0; if(b[i]==0) w[numb++]=i; } } j++; } for(int i=0; i<26; i++)//还有边则有冲突 for(int j=0; j<26; j++) if(mp[i][j]) { puts("Impossible"); return 0; } for(int i=0; i<numb; i++) printf("%c",w[i]+'a'); cout<<endl; return 0;}/*6axaybybzczcx*/
0 0
- 【拓扑排序】 Codeforces Round #290 (Div. 1) A Fox And Names
- Codeforces Round #290 (Div. 1)A. Fox And Names
- Codeforces Round #290 (Div. 1) A. Fox And Names
- Codeforces Round #290 (Div. 2)C. Fox And Names(拓扑排序)
- Codeforces Round #290 (Div. 2)C - Fox And Names——拓扑排序
- Codeforces Round #290 (Div. 2) C. Fox And Names 拓扑排序
- Codeforces Round #290 (Div. 2) C. Fox And Names 拓扑排序
- Codeforces Round #290 (Div. 2) C. Fox And Names 拓扑排序
- Codeforces Round #290 (Div. 2) - C. Fox And Names (拓扑排序)
- 拓扑排序——Codeforces Round #290 (Div. 2) C. Fox And Names
- 拓扑排序 Fox And Names : CodeForces
- C. Fox And Names Codeforces Round #290 (Div. 2)
- C. Fox And Names(Codeforces Round #290 (Div. 2))
- Codeforces Round #290 (Div. 2) C. Fox And Names
- Codeforces Round #290 (Div. 2) C题Fox And Names
- Codeforces Round #290 (Div. 2)-C. Fox And Names
- Codeforces Round #290 (Div. 2) C. Fox And Names && D. Fox And Jumping
- codeforces 510C Fox And Names 拓扑排序
- Spring 之注解事务 @Transactional
- github提交代码使用
- cocos3.x之C++11新特性
- 解决:MATLAB_Compiler_Runtime libgfortran.so.3: version `GFORTRAN_1.4' not found
- linux 路由表设置(双网卡)
- 【拓扑排序】 Codeforces Round #290 (Div. 1) A Fox And Names
- 一个项目经理的个人体会、经验总结
- 进程、控制终端、会话、守护进程
- C++的static静态函数
- VMWare Image Clone Problem: eth0 Renamed As eth1
- ios修改了coredata数据结构后,更新安装会闪退
- 关于大型网站技术演进的思考(一)--存储的瓶颈(1)
- 下拉框应用
- linux 进程高cpu问题分析