题目大意:
给你一串序列,然后再给你他们部分的大小,要求你输出他们从小到大的所有排列。
如a b f g 然后 a
思路:
把这些字符看成点,如果存在a
话说这题的输入很坑爹,那个大小关系的我还以为是4个一组。。结果被坑死了。看了discuss改了才过。。第一次写拓扑。。。。
#include#include #include #include using namespace std; const int MAXN=30; char a[MAXN]; char temp[200]; int map[MAXN][MAXN]; bool vis[MAXN]; int id[MAXN],to[MAXN],route[MAXN]; int len; void topsort(int cur) { if(cur==len) { for(int i=0;i