8分WA求助
查看原帖
8分WA求助
717971
liuyi0905楼主2024/6/25 09:35

AC#2、#9,其他全WA,不知道哪错了。

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5,M=1e7+5,C=26;
int n,m;
char c[M];
struct Trie{
	int h,x[N][C];
	bool f[N],g[N],z;
	void insert(string s){
		int u=0;
		for(int i=0,c;i<s.size();i++){
			c=s[i]-'a';
			!x[u][c]&&(x[u][c]=++h);
			u=x[u][c];
		}
		f[u]=1;
	}
	void vis(string s){
		int u=0;
		for(int i=0,c;i<s.size();i++)
			c=s[i]-'a',g[u=x[u][c]]=1;
	}
	void dfs(int u){
		f[u]&&(c[++m]='P');
		int p=-1;
		for(int i=0;i<26;i++)
			if(g[x[u][i]])p=i;
			else if(x[u][i])
				c[++m]='a'+i,dfs(x[u][i]);
		if(~p)
			c[++m]='a'+p,dfs(x[u][p]);
		!(z|=g[u]&&!~p)&&(c[++m]='_');
	}
}t;
int main(){
	cin>>n;
	string z="";
	for(int i=1;i<=n;i++){
		string s;
		cin>>s,t.insert(s);
		s.size()>z.size()&&(z=s,1);
	}
	t.vis(z),t.dfs(0);
	cout<<m<<"\n";
	for(int i=1;i<=m;i++)
		cout<<c[i]<<"\n";
	return 0;
}
2024/6/25 09:35
加载中...