1 条题解

  • -18
    @ 2023-8-19 17:16:40
    #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
    上传者