codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<utility> #include<algorithm> #include<vector> #include<queue> #include<set> #include<map> #include<cmath> #include<cstring> #include<cctype> #include<string> #include<string.h> #include<list> #include<strstream> using namespace std; string str; char c[5000]; bool used[30]; vector<int> g[30]; int a[30],n; int fa[30]; const string s=" abcdefghijklmnopqrstuvwxyz"; void init() { memset(used,false,sizeof(used)); memset(g,0,sizeof(g)); memset(a,0,sizeof(a)); memset(fa,0,sizeof(fa)); n=0; } void dfs(int k,string ans) { if(k==n+1) { printf("%s\n",ans.c_str()); // cout<<ans<<endl; return; } /* cout<<k<<ans<<endl; for(int i=1;i<=n;i++) cout<<fa[a[i]]<<" "; cout<<endl;*/ for(int i=1;i<=n;i++) { if(used[a[i]] || fa[a[i]]!=0) continue; used[a[i]]=true; for(int j=0;j<g[a[i]].size();j++) fa[g[a[i]][j]]--; // cout<<"yes"<<endl; // cout<<s.substr(a[i],1); dfs(k+1,ans+s.substr(a[i],1)); used[a[i]]=false; for(int j=0;j<g[a[i]].size();j++) fa[g[a[i]][j]]++; } } int main() { while(getline(cin,str)) { strcpy(c,str.c_str()); init(); for(int i=0;i<strlen(c);i+=2) a[++n]=c[i]-'a'+1; sort(a+1,a+n+1); getline(cin,str); strcpy(c,str.c_str()); for(int i=0;i<strlen(c);i+=4) { //i i+2 int x=c[i]-'a'+1; int y=c[i+2]-'a'+1; g[x].push_back(y); fa[y]++;//son[x]++; } /* for(int i=1;i<=n;i++) { cout<<a[i]<<":"; for(int j=0;j<g[a[i]].size();j++) cout<<g[a[i]][j]<<" "; cout<<endl; } cout<<"-----------"<<endl;*/ dfs(1,""); printf("\n"); } return 0; }
Private
[
?
]
Run code
Submit