1 条题解
-
-18
#include<bits/stdc++.h> using namespace std; vector<int>a[50023]; string st[58933]; queue<int>q; int d[50043]; char f[30]; bool vis[40]; int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int k,u,v,tot=0,ch=97; string x; cin>>k; memset(d,0,sizeof(d)); memset(d,0,sizeof(vis)); for(int i=1;i<=k;i++) cin>>st[i]; for(int i=1;i<=k;i++) for(int j=0;j<st[i].size();j++) vis[st[i][j]-96]=1; for(int i=1;i<k;i++) { int j=-1; while(st[i][++j]==st[i+1][j]); u=st[i][j]-'0',v=st[i+1][j]-'0'; a[u].push_back(v),d[v]++; } cin>>x; for(int i=1;i<=26;i++) if(d[i]==0) q.push(i),f[i]=char(ch); while(!q.empty()) { while(!q.empty()) { u=q.front(),d[u]=-1,tot++,f[u]=char(ch); for(int i=0;i<a[u].size();i++) d[a[u][i]]--; q.pop(); } for(int i=1;i<=26;i++) { if(d[i]==0&&vis[i]) { q.push(i); f[i]=char(ch); } } ch++; } for(int i=0;i<x.size();i++) cout<<f[x[i]-96]; return 0; }
- 1
信息
- ID
- 472
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 224
- 已通过
- 14
- 上传者