135852025-01-08 10:31:57csdavidKerékpártúra (50 pont)cpp17Elfogadva 50/50126ms3700 KiB
#include <iostream>
#include <set>
#include <queue>
using namespace std;

struct csucs{
    vector<int> el, vissza;
    bool bejart=0, jo=0;
};

int main()
{
    queue<int> q;
    int n, m, x, y, kezdopont, ossz=0;
    cin >> n >> m >> kezdopont;
    kezdopont--;
    csucs a[n];
    while(m--){
        cin >> x >> y;
        x--;
        y--;
        a[x].el.push_back(y);
        a[y].vissza.push_back(x);
    }
    a[kezdopont].jo=1;
    q.push(kezdopont);
    while(!q.empty()){
        x=q.front();
        q.pop();
        for(auto& it:a[x].vissza){
            if(!a[it].jo){
                a[it].jo=1;
                q.push(it);
            }
        }
    }
    q.push(kezdopont);
    a[kezdopont].bejart=1;
    while(!q.empty()){
        x=q.front();
        q.pop();
        for(auto& it:a[x].el){
            if(!a[it].bejart&&a[x].jo){
                a[it].bejart=1;
                q.push(it);
                ossz++;
            }
        }
    }
    a[kezdopont].bejart=0;
    cout << ossz << '\n';
    for(int i=0; i<n; i++){
        if(a[i].bejart){
            cout << i+1 << ' ';
        }
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/019ms1356 KiB
3Elfogadva2/21ms500 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms508 KiB
8Elfogadva2/23ms316 KiB
9Elfogadva2/23ms316 KiB
10Elfogadva2/24ms424 KiB
11Elfogadva2/24ms316 KiB
12Elfogadva2/212ms612 KiB
13Elfogadva2/29ms508 KiB
14Elfogadva2/220ms876 KiB
15Elfogadva3/332ms1600 KiB
16Elfogadva4/435ms1796 KiB
17Elfogadva4/450ms2012 KiB
18Elfogadva3/343ms1992 KiB
19Elfogadva3/339ms1824 KiB
20Elfogadva3/3111ms3128 KiB
21Elfogadva3/3125ms3596 KiB
22Elfogadva3/3126ms3700 KiB