#290 (div.2) C. Fox And Names

来源:互联网 发布:怎么做网络推广赚钱 编辑:程序博客网 时间:2024/04/30 21:51

1.题目描述:点击打开链接

2.解题思路:本题利用拓扑排序解决。本题要求出一个a~z的排列,使得所有名字按照这样的“字典序”是逐渐增加的。显然这里存在着字母之间的大小关系,容易联想到拓扑排序。

那么该如何来排序呢?先思考一下简单的情况,假设姓名s,t是相邻的两个名字,如果s是t的一个前缀,那么跳过即可;反之如果t是s的前缀,那么肯定是无解的。如果不是以上这种情况,那么首个不相同的位置处的两个字母就可以连一条边,最终构建出一个有向图。最后利用拓扑排序的模板,为26个英文字母从后向前排序即可。

3.代码:

#define _CRT_SECURE_NO_WARNINGS #include<iostream>#include<algorithm>#include<string>#include<sstream>#include<set>#include<vector>#include<stack>#include<map>#include<queue>#include<deque>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<functional>using namespace std;#define N 110char s[N][N];int g[26][26];int c[26], topo[26], t;int n;bool dfs(int u){c[u] = -1;for (int v = 0; v < 26;v++)if (g[u][v]){if (c[v] < 0)return false;if (!c[v] && !dfs(v))return false;}c[u] = 1;topo[--t] = u;return true;}bool toposort(){t = 26;memset(c, 0, sizeof(c));memset(topo, 0, sizeof(topo)); for (int i = 25; i >=0;i--)//注意,一定要从后往前来寻找if (!c[i])if (!dfs(i))return false;return true;}int main(){//freopen("t.txt", "r", stdin);while (~scanf("%d", &n)){memset(g, 0, sizeof(g));for (int i = 0; i < n; i++)scanf("%s", s[i]);for (int i = 0; i < n - 1; i++){int l1 = strlen(s[i]);int l2 = strlen(s[i + 1]);int p = 0;while (p < min(l1, l2) && s[i][p] == s[i + 1][p])p++;if (p == l1&&l1 < l2)continue;//如果s[i]是s[i+1]的前缀,那么跳过if (p == l2&&l2 < l1){ puts("Impossible"); goto x1; }//反之,一定无解if (g[s[i][p] - 'a'][s[i + 1][p] - 'a'])continue;g[s[i][p] - 'a'][s[i + 1][p] - 'a'] = 1;//建立有向图}if (toposort()){for (int i = 0; i < 26; i++)printf("%c", topo[i] + 'a');puts("");}else puts("Impossible");x1:;}return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚开淘宝店没信誉要怎么办 如果发现货品有问题商家不换怎么办 文件夹里面的图片怎么拖不动怎么办 网赌系统维护审核就不给提款怎么办 客户说我卖的东西是假货怎么办 微信小程序第三方平台倒闭了怎么办 金立手机锁屏密码忘了怎么办 不知道微信账号的公众号密码怎么办 微信公众号充话费充错号码怎么办 蜻蜓商城三天免流业务退不了怎么办 日上免税店提货日期写错了怎么办 微信公众平台账号名密码忘了怎么办 有人扬言要搞垮我的店铺怎么办 招行信用卡签到积分未领取怎么办 怎么办照片发送到邮微信箱里去 苹果手机备忘录没刪除就没了怎么办 因恶意刷公众号而被微信封号怎么办 禁停路段发生剐蹭怎么办办 新三板公司退市了 小股东怎么办? 爱用商城发货没有物流信息怎么办 拼多多的快递的运单号发错了怎么办 追光娱乐账号被别人盗用了怎么办啊 用鲁大师检测硬盘出现损坏怎么办 客户拖款迟迟不给给怎么办 百度云盘文件密码忘记了怎么办 用来注册亚马逊的公司注销了怎么办 亚马逊中国卖家太多美国卖家怎么办 付款了!卖家不想卖了怎么办? 手机通讯录同步助手密码忘了怎么办 毕业生学位信息照片上传错了怎么办 报名计算机二级照片上传很慢怎么办 网上报名时照片上传错了怎么办 特岗教师报名时照片上传模糊怎么办 百家号申请过新手被拒绝三次怎么办 6岁儿童个子高不长肉体形瘦怎么办 网页游戏加载完毕卡了不动怎么办 小番茄未成熟下面就坏掉是怎么办 千牛快捷短语界面变得好宽怎么办 申请大王卡手机号填错了怎么办 别人盗用我手机号申请微信号怎么办 淘宝支付宝里没钱了买家退款怎么办