답안 #855075

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
855075 2023-09-30T04:29:19 Z vjudge1 Type Printer (IOI08_printer) C++17
20 / 100
66 ms 50128 KB
#include <bits/stdc++.h>
using namespace std;
bool vis1[500005];
int t[500005][26];//o --> ch
int t2[500005];//i的深度
set<pair<int,int>> t1[500005];//i的子树的深度排序后
int k,ans1=0; 
struct Trie {
	int n = 1;
	void update(string s) {
		int o = 1;
		for (int i = 0; i < (int)s.size(); i++) {
			if (!t[o][s[i] - 'a'])
				t[o][s[i] - 'a'] = ++n, o = n;
			else
				o = t[o][s[i] - 'a'];
		}
		vis1[o] = 1; // 结尾
		return;
	}
	int dfs1(int o) {
		int flag=0;
		for(int i=0;i<26;i++){
			if(t[o][i]!=0){
				flag=1;
				int d=dfs1(t[o][i]);//o子树i的深度
				t1[o].insert({d,i});
				t2[o]+=d;
			}
		}
		if(!flag)return 1;
		return t2[o];
	}
	void dfs(int o, vector<char>& ans) {
		if(vis1[o]==1)ans1++,ans.push_back('P');
		for(auto i:t1[o]){
			ans.push_back(i.second+'a');
			dfs(t[o][i.second],ans);
		}
		if(ans1!=k)ans.push_back('-');
		return;
	}
};
int main() {
	cin >> k;
	string s;
	Trie tr;
	for (int i = 0; i < k; i++) {
		cin >> s;
		tr.update(s);
	}
	tr.dfs1(1);
	vector<char> ans;
	tr.dfs(1, ans);
	cout << ans.size();
	cout << "\n";
	for (char i : ans)
		cout << i << "\n";
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 25176 KB Output is correct
2 Correct 5 ms 25180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 25176 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 25180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 25180 KB Output is correct
2 Correct 5 ms 25180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 25180 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 26204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 29148 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 24 ms 35032 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 66 ms 50128 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 54 ms 44744 KB Output isn't correct
2 Halted 0 ms 0 KB -