295332026-06-11 11:23:30Kristof0306Mingrel *cpp17Elfogadva 100/10041ms4056 KiB
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> sorrend(26);
vector<bool> visited(26);
vector<int> out;

void dfs(int csucs) {
	visited[csucs] = true;
	for (int i : sorrend[csucs]) {
		if (!visited[i]) {
			dfs(i);
		}
	}
	out.push_back(csucs);
}

int main() {
	int n; cin >> n;
	vector<string> inp(n);
	for (int i = 0; i < n; i++) {
		cin >> inp[i];
	}
	for (int i = 0; i < n-1; i++) {
		for (int j = 0; j < 100; j++) {
			//cout << i << " ";
			if (inp[i].size() <= j || inp[i+1].size() <= j) {
				continue;
			}
			if (j != 0) {
				if (inp[i][j-1] != inp[i+1][j-1]) {
					continue;
				}
			}

			if (inp[i][j] != inp[i+1][j]) {
				sorrend[inp[i][j]-97].push_back(inp[i+1][j]-97);
				break;
			}
		}
		//cout << "--" << j << "--\n";
	}

	for (int i = 0; i < 26; i++) {
		if (!visited[i]) {
			dfs(i);
		}
	}

	/*
	for (vector<int> v : sorrend) {
		for (int i : v) {
			char c = i+97;
			cout << c << " ";
		}
		cout << "\n";
	}*/

	reverse(out.begin(), out.end());
	for (int i : out) {
		char c = i+97;
		cout << c;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva8/82ms316 KiB
2Elfogadva8/82ms500 KiB
3Elfogadva8/82ms316 KiB
4Elfogadva8/82ms316 KiB
5Elfogadva8/83ms316 KiB
6Elfogadva8/81ms316 KiB
7Elfogadva8/81ms316 KiB
8Elfogadva8/83ms568 KiB
9Elfogadva8/84ms820 KiB
10Elfogadva8/841ms4056 KiB
11Elfogadva8/841ms4052 KiB
12Elfogadva12/1241ms4056 KiB