set全RE
查看原帖
set全RE
416959
alexbear103楼主2022/2/27 17:02
#include <bits/stdc++.h>
using namespace std;
struct node {
	set<int> lst;
	int child[26];
} trie[20005];
int siz;
void insert(string s, int art) {
	int p = 0;
	for (int i = 0; i < s.size(); ++i) {
		if (trie[p].child[s[i] - 'a'] == 0) {
			trie[p].child[s[i] - 'a'] = ++siz;
		}
		p = trie[p].child[s[i] - 'a'];
	}
	trie[p].lst.insert(art);
}
int query(string s) {
	int p = 0;
	for (int i = 0; i < s.size(); ++i) {
		if (trie[p].child[s[i] - 'a'] == 0) {
			return -1;
		}
		p = trie[p].child[s[i] - 'a'];
	}
	return p;
}
int main(){
	int n, m;
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		int k; cin >> k;
		for (int j = 1; j <= k; ++j) {
			string t; cin >> t;
			insert(t, i);
		}
	}
	cin >> m;
	for (int i = 1; i <= m; ++i) {
		string t; cin >> t;
		int v = query(t);
		if (v == -1) {
		    cout << endl;
		    continue;
		}
		if (trie[v].lst.empty()) {
		    cout << endl;
		    continue;
		}
		for (set<int>::iterator it = trie[v].lst.begin(); it != trie[v].lst.end(); it++) {
			cout << *it << ' ';
		}
		cout << endl; 
	}
	return 0;
}

rt 样例过了

2022/2/27 17:02
加载中...