295072026-06-11 09:49:08KristófMingrel *cpp17Elfogadva 100/10043ms4072 KiB
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int firstdif(string a,string b)
{
int l=0,r=0;
while(l<a.size() && r<b.size() && a[l]==b[r]){l++;r++;}
if(l==a.size() || r==b.size())return -1;
return l;
}

vector<vector<int>> g(26);

int main()
{
    //cout<<firstdif("alma","atom");
    int n;
    cin>>n;
    vector<string> szavak(n);
    for(string &x:szavak)cin>>x;
    for(int i=0;i<n-1;i++)
        {
        int dif=firstdif(szavak[i],szavak[i+1]);
        if(dif==-1)continue;
       // cout<<i<<" "<<dif<<"\n";
        g[szavak[i][dif]-'a'].push_back(szavak[i+1][dif]-'a');
        }
    vector<int> tops;
    vector<int> indeg(26,0);
    queue<int> q;
    for(int i=0;i<26;i++)
        {
        for(int x:g[i])
            indeg[x]++;
        }
    for(int i=0;i<26;i++)
        {
        if(!indeg[i])q.push(i);
        }
    while(q.size())
        {
        int node=q.front();q.pop();
        tops.push_back(node);
        for(int x:g[node])
            {
            indeg[x]--;
            if(!indeg[x])q.push(x);
            }
        }
    for(int x:tops)cout<<char(x+97);
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva8/81ms500 KiB
2Elfogadva8/81ms316 KiB
3Elfogadva8/81ms316 KiB
4Elfogadva8/81ms316 KiB
5Elfogadva8/81ms316 KiB
6Elfogadva8/81ms500 KiB
7Elfogadva8/82ms352 KiB
8Elfogadva8/83ms564 KiB
9Elfogadva8/86ms824 KiB
10Elfogadva8/843ms4056 KiB
11Elfogadva8/841ms3892 KiB
12Elfogadva12/1243ms4072 KiB