求
查看原帖
求
1061770
technology_s楼主2024/6/2 20:07

万恶UVA评我0分,但是在别的OJ上是100

#include<bits/stdc++.h>
using namespace std;
int t,n,cnt;
string s[1000010];
struct trie{
	int nxt[1000010][2],vis[1000010],cnt;
	void init(){
		vis[0]=nxt[0][0]=nxt[0][1]=cnt=0;
	}int insert(string s,int len){
		int q=0,flag=0;
		for(int i=0;i<len;i++){
			int c=s[i]-'0';
			if(nxt[q][c]==0){
				cnt++;
				vis[cnt]=nxt[cnt][0]=nxt[cnt][1]=0;
				nxt[q][c]=cnt;
			}else if(i==len-1){
				flag=1;
			}q=nxt[q][c];
			if(vis[q]==1){
				flag=1;
			}
		}vis[q]=1;
		return flag;
	}
}tree;
int main(){
	while(cin>>s[n]){
		if(s[n][0]=='9'){
			cnt++;
			tree.init();
			int flag=0;
			for(int i=0;i<n;i++){
				if(tree.insert(s[i],s[i].size())==1){
					flag=1;
				}	
			}if(flag==1){
				printf("Set %d is not immediately decodable\n",cnt);
			}else{
				printf("Set %d is immediately decodable\n",cnt);
			}n=0;
		}n++;
	}return 0;
}
2024/6/2 20:07
加载中...