病毒
Posted pigAlg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了病毒相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
#define N 50005
int k;
char ch[N][100];
char a[N];
int mp[N][100],in[N],out[N];
char ans[N];
int cnt;
queue<int> q;
inline int read()
int x=0;
bool f=1;
char ch=getchar();
for(;!isdigit(ch);ch=getchar())
if(ch==\'-\')
f=0;
for(;isdigit(ch);ch=getchar())
x=(x<<1)+(x<<3)+ch-\'0\';
return f?x:(~(x-1));
int main()
k=read();
for(int i=1;i<=26;i++)
in[i]=-1;
for(int i=1;i<=k;i++)
scanf("%s",ch[i]);
scanf("%s",a);
for(int i=0;i<strlen(a);i++)
in[a[i]-\'a\'+1]=0;
for(int i=1;i<k;i++)
int x=i+1;
int len=min(strlen(ch[i]),strlen(ch[x]));
// cout<<i<<" vs "<<x<<endl;
for(int j=0;j<len;j++)
if(ch[i][j]==ch[x][j])continue;
int o=ch[i][j]-\'a\'+1,p=ch[x][j]-\'a\'+1;
// cout<<o<<" "<<p<<endl;
in[p]++;
out[o]++;
mp[o][out[o]]=p;
break;
// cout<<endl;
for(int i=1;i<=26;i++)
// cout<<i<<" "<<in[i]<<endl;
if(in[i]==0)
q.push(i);
// cout<<(char)(i+\'a\'-1)<<endl;
cnt++;
ans[cnt]=i+\'a\'-1;
if(cnt!=1)
cout<<0;
return 0;
while(!q.empty())
int k=q.front();
q.pop();
for(int i=1;i<=out[k];i++)
int t=mp[k][i];
in[t]--;
if(in[t]==0)
q.push(t);
cnt++;
ans[cnt]=t+\'a\'-1;
// for(int i=1;i<=cnt;i++)
//
// cout<<ans[i];
//
// cout<<cnt;
// if(cnt==k)
// cout<<"error"<<endl;
for(int i=0;i<strlen(a);i++)
for(int j=1;j<=cnt;j++)
if(a[i]==ans[j])
cout<<(char)(j+\'a\'-1);
break;
//
return 0;
本文来自博客园,作者:pig_pig,转载请注明原文链接:https://www.cnblogs.com/pigAlg/p/17229635.html
以上是关于病毒的主要内容,如果未能解决你的问题,请参考以下文章