132442025-01-07 10:41:07Leventusz09Kerékpártúra (50 pont)cpp17Elfogadva 50/50130ms5428 KiB
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int N, M, K;
    cin >> N  >> M >> K;
    K--;

    vector<vector<int>> et(N); // ?edge to
    vector<vector<int>> ef(N); // ?edge from
    vector<bool> rh(N); // ?reach home
    vector<bool> ty(N); // ?temporary


    int U, V;
    for(int _=0; _<M; _++){
        cin >> U >> V;
        U--; V--;
        et[U].push_back(V);
        ef[V].push_back(U);
    }




    vector<int> Q;
    Q.push_back(K);
    int si = 0; // start index
    ty[K] = true;
    while(si < Q.size()){
        for(int n : ef[Q[si]]){
            if(!ty[n]){
                ty[n] = true;
                rh[n] = true;
                Q.push_back(n);
            }
        }
        si++;
    }




    Q.clear();
    Q.push_back(K);
    si = 0;
    int oc = 0;
    vector<int> ol;
    for(int i=0; i<N; i++) ty[i] = false;
    ty[K] = true;
    while(si < Q.size()){
        for(int n : et[Q[si]]){
            if(!ty[n]){
                ty[n] = true;
                oc++;
                ol.push_back(n);
                if(rh[n])
                    Q.push_back(n);
            }
        }
        si++;
    }

    cout << oc << endl;
    for(int &dv : ol) cout << dv+1 << " ";
    cout << endl;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/019ms1588 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/22ms316 KiB
7Elfogadva2/21ms556 KiB
8Elfogadva2/23ms420 KiB
9Elfogadva2/23ms316 KiB
10Elfogadva2/24ms352 KiB
11Elfogadva2/24ms596 KiB
12Elfogadva2/212ms848 KiB
13Elfogadva2/210ms856 KiB
14Elfogadva2/220ms1188 KiB
15Elfogadva3/332ms2212 KiB
16Elfogadva4/437ms2356 KiB
17Elfogadva4/452ms2956 KiB
18Elfogadva3/346ms2648 KiB
19Elfogadva3/339ms2356 KiB
20Elfogadva3/3115ms4916 KiB
21Elfogadva3/3128ms5264 KiB
22Elfogadva3/3130ms5428 KiB