TrieRE求调
查看原帖
TrieRE求调
878137
_QWQ__QWQ_楼主2024/7/13 10:44
#include<bits/stdc++.h>
#define endl "\n"
#define int long long
using namespace std;
const int maxn=1e6+5;
string s[maxn];
int n,tot,node[maxn][2],exist[maxn];
void insert(string s){
	int u=0,len=s.size();
	for(int i=0;i<len;i++){
		int c=s[i]-'0';
		if(node[u][c]==0){
			tot++;
			node[u][c]=tot;
		}
		u=node[u][c];
	}
	exist[u]++;
}
bool search(string s){
	int u=0,len=s.size();
	for(int i=0;i<len;i++){
		int c=s[i]-'0';
		if(exist[u]!=0){
			return 1;
		}
		u=node[u][c];
	}
	return 0;
}
signed main(){
	int ah=1,t=0;
	while(cin>>s[ah]){
		if(s[ah]=="9"){
			memset(node,0,sizeof(node));
			memset(exist,0,sizeof(exist));
			t++;
			n=ah-1;
			for(int i=1;i<=n;i++){
				insert(s[i]);
			}
			int flag=0;
			for(int i=1;i<=n;i++){
				if(search(s[i])==1){
					cout<<"Set "<<t<<" is not immediately decodable\n";
					flag=1;
					break;
				}
			}
			if(flag==0){
				cout<<"Set "<<t<<" is immediately decodable\n";
			} 
			ah=0;
		}
		ah++;
	}
	return 0;
}
2024/7/13 10:44
加载中...