题意:给出将会出现的多个字母,并紧接着给出一部分字母的大小关系,要求按照字典序从小到大输出所有符合上述关系的排列。

拓扑序,由于需要输出所有排列,所以需要使用 dfs ,只要点从小到大遍历就可以实现字典序排列了。

  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int ma[][],id[],vis[],v[],n;
  5.  
  6. char s[],ans[];
  7.  
  8. char read(){
  9. char c=getchar();
  10. while((c>'z'||c<'a')&&(c!='\n'))c=getchar();
  11. return c;
  12. }
  13.  
  14. void dfs(int ss,int t){
  15. ans[t]=ss+'a';
  16. v[ss]=;
  17. if(t==n){
  18. for(int i=;i<=n;++i)printf("%c",ans[i]);
  19. printf("\n");
  20. v[ss]=;
  21. return;
  22. }
  23. int que[],cnt=;
  24. for(int i=;i<;++i){
  25. if(ma[ss][i])id[i]--;
  26. if(vis[i]&&!id[i]&&!v[i])que[++cnt]=i;
  27. }
  28. for(int i=;i<=cnt;++i)dfs(que[i],t+);
  29. for(int i=;i<;++i)if(ma[ss][i])id[i]++;
  30. v[ss]=;
  31. }
  32.  
  33. int main(){
  34. int ccnt=;
  35. while(scanf("%s",s)!=EOF){
  36. if(ccnt++)printf("\n");
  37. memset(ma,,sizeof(ma));
  38. memset(id,,sizeof(id));
  39. memset(vis,,sizeof(vis));
  40. memset(v,,sizeof(v));
  41. n=;
  42. vis[s[]-'a']=;
  43. n++;
  44. char c1,c2;
  45. while(c1=getchar()){
  46. if(c1=='\n')break;
  47. if(c1>'z'||c1<'a')continue;
  48. int cc=c1-'a';
  49. if(!vis[cc]){
  50. vis[cc]=;
  51. n++;
  52. }
  53. }
  54. bool f=;
  55. while(f){
  56. c1=read();
  57. if(c1=='\n')break;
  58. c2=read();
  59. int cc1=c1-'a',cc2=c2-'a';
  60. if(!ma[cc1][cc2]){
  61. ma[cc1][cc2]=;
  62. id[cc2]++;
  63. }
  64. }
  65. for(int i=;i<;++i)if(vis[i]&&!id[i])dfs(i,);
  66. }
  67. return ;
  68. }

poj1270 拓扑序(DFS)的更多相关文章

  1. hdu5438(2015长春赛区网络赛1002)拓扑序+DFS

    题意:给出一张无向图,每个节点有各自的权值,问在点数为奇数的圈中的点的权值总和是多少. 通过拓扑序的做法标记出所有非圈上的点,做法就是加每条边的时候将两点的入度都加一,然后将所有度数为1的点入队,删去 ...

  2. poj1128 拓扑序(DFS)

    题意:给出一张图,它是由一系列字母框按一定顺序从下到上摆放,因此上面的字母框会覆盖一部分下面的字母框,确保每个字母框的四条边都至少会出现一个点,要求输出所有可行的摆放顺序,字典序从小到大输出. 首先可 ...

  3. 拓扑排序+DFS(POJ1270)

    [日后练手](非解题) 拓扑排序+DFS(POJ1270) #include<stdio.h> #include<iostream> #include<cstdio> ...

  4. ACM/ICPC 之 拓扑排序+DFS(POJ1128(ZOJ1083)-POJ1270)

    两道经典的同类型拓扑排序+DFS问题,第二题较第一题简单,其中的难点在于字典序输出+建立单向无环图,另外理解题意是最难的难点,没有之一... POJ1128(ZOJ1083)-Frame Stacki ...

  5. poj2762 强连通+拓扑序

    题意:有 n 个房间,不同房间之间有单向通道,问是否任意两个房间 A .B 都可以从 A 到 B 或从 B 到 A(有一条有就可以). 在这题中,如果一些点是在同一个强连通分量中,那么这些点肯定能够相 ...

  6. UVA10305 拓扑序

    题意:给出多个任务,以及一系列任务的关系表示某个任务必须在某个任务前完成,问一个合理的任务完成顺序 拓扑序的裸题,一开始用大白书的写法,后来发现并不好用,就换了BFS又A了一遍. 原: #includ ...

  7. codevs1304 拓扑序计数

    题目描述                     Description 求一颗有根树/树形图的拓扑序个数. 输入描述                 Input Description        ...

  8. 拓扑序+dp Codeforces Round #374 (Div. 2) C

    http://codeforces.com/contest/721/problem/C 题目大意:给你有向路,每条路都有一个权值t,你从1走到n,最多花费不能超过T,问在T时间内最多能访问多少城市? ...

  9. bzoj5280/luogu4376 MilkingOrder (二分答案+拓扑序)

    二分答案建图,然后判环,就可以了. 字典序输出的话,只要做拓扑序的时候用优先队列来维护就可以了. (其实判环也可以用拓扑序...) #include<cstdio> #include< ...

随机推荐

  1. c#读取文本文档实践1-File.ReadAllLines()

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  2. 修改Azure Website 移动服务 默认时区

    Azure Website 默认时区为国际标准时间,对中国用户来说不太方便友好,如何设置成北京时间呢? 打开Azure Website的“配置”页,找到“应用设置”节点. 在应用设置中添加设置项,密钥 ...

  3. PAT 06-2 字符串字母大小写转换

    没什么好说的,记得使用ctype.h就好了,谭浩强那本书就介绍了,再不使用就太对不起他老人家了:有一点小小的地方需要注意一下,&&的优先级比=号高,所以getchar()两边没有括号的 ...

  4. 保存现场数据和状态:onSaveInstanceState\onRestoreInstanceState\onCreate()

    当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候. 注意上面 ...

  5. flex css 布局

    http://www.w3cplus.com/css3/flexbox-basics.html

  6. HTML的盒子模型

    每个HTML元素都可以看作一个装了东西的盒子,盒子具有宽度(width)和高度(height),盒子里面的内容到盒子的边框之间的距离即填充(padding),盒子本身有边框(border),而盒子边框 ...

  7. UITableView详解(1)

    一,UITableView控件使用必备,红色部分是易错点和难点 首先创建一个项目,要使用UITableView就需要实现协议<UITableViewDataSource>,数据源协议主要完 ...

  8. HttpHandler中无法使用Session(context.Session 为Null)

    一.问题描述: 最近需要做一个对特定请求(.report)进行响应的接口,当然是使用实现IHttpHandler来进行处理,实现IHttpHandler接口就必须要实现它的两个方法,ProcessRe ...

  9. HDU 1811

    http://acm.hdu.edu.cn/showproblem.php?pid=1811 中文码题 对于等号的情况,用并查集合并(因为编号不同一定可以分出先后) 然后判断能否构成拓扑排序,以及拓扑 ...

  10. 【转】IoC/DIP其实是一种管理思想

    原文转自:http://blogread.cn/it/article/6487?f=wb 关于IoC的的概念提出来已经很多年了,其被用于一种面象对像的设计.我在这里再简单的回顾一下这个概念.我先谈技术 ...