129452025-01-03 19:05:46ercseferencA lehető legkevesebb átszállás (50 pont)cpp17Hibás válasz 2/508ms836 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct vonat{int bem,kim,ind,rendi=0;};
int b[100001];
vector<vonat>a;
bool hasonl(vonat n, vonat m){
    if(n.bem==m.bem)
        return n.kim<m.kim;
    else return n.bem<m.bem;}
int main()
{
    int n,m;
    cin>>n>>m;
    a.resize(n+1);
    for(int i=1; i<=n; i++){cin>>a[i].bem>>a[i].kim; a[i].ind=i;}
    sort(a.begin(),a.end(),hasonl);
    b[1]=1;
    for(int i=2; i<=n; i++)
        {if(a[i].bem!=a[i-1].bem)b[a[i].bem]=i;}
    vector<int>l1,l2; bool nincs=0; bool van=0; int r=0;
    int p=1; while(a[p].bem==1){l1.push_back(p); p++;}
    int jos;
    while(nincs==0&&van==0){
        r++;
        for(int i=0; i<l1.size(); i++){
            if(b[a[l1[i]].kim]!=0){
                p=b[a[l1[i]].kim];
                while(a[p].bem==a[l1[i]].kim)
                    {l2.push_back(p); a[p].rendi=r; p++;}}}
        if(l2.size()==0)nincs=1;
        l1.clear();
        for(int i=0; i<l2.size(); i++){
            l1.push_back(l2[i]);
            if(a[l2[i]].kim==m){van=1; jos=l2[i]; }}
        l2.clear();}
    if(van==1){
        cout<<r<<endl;
        vector<int>megoldas;
        int q=jos-1;
        megoldas.push_back(a[jos].ind);
        r--;
        while(r!=-1){
            if(a[q].kim==a[jos].bem && a[q].rendi==r){
                r--; jos=q; megoldas.push_back(jos);}
            q--;}
        for(int i=megoldas.size()-1; i>=0; i--){cout<<megoldas[i]<<" ";}}
    else cout<<"-1";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base2/50
1Elfogadva0/01ms320 KiB
2Hibás válasz0/08ms824 KiB
3Elfogadva1/11ms320 KiB
4Elfogadva1/11ms320 KiB
5Hibás válasz0/21ms320 KiB
6Hibás válasz0/21ms320 KiB
7Hibás válasz0/21ms320 KiB
8Hibás válasz0/22ms320 KiB
9Hibás válasz0/22ms320 KiB
10Hibás válasz0/23ms320 KiB
11Hibás válasz0/24ms472 KiB
12Hibás válasz0/24ms492 KiB
13Hibás válasz0/21ms320 KiB
14Hibás válasz0/22ms568 KiB
15Hibás válasz0/23ms568 KiB
16Hibás válasz0/24ms568 KiB
17Hibás válasz0/26ms776 KiB
18Hibás válasz0/27ms792 KiB
19Hibás válasz0/27ms820 KiB
20Hibás válasz0/27ms824 KiB
21Hibás válasz0/28ms836 KiB
22Hibás válasz0/28ms836 KiB
23Hibás válasz0/28ms580 KiB
24Hibás válasz0/28ms584 KiB
25Hibás válasz0/28ms568 KiB
26Hibás válasz0/28ms568 KiB
27Hibás válasz0/28ms756 KiB
28Hibás válasz0/28ms568 KiB