135852025-01-08 10:31:57csdavidKerékpártúra (50 pont)cpp17Accepted 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;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/019ms1356 KiB
3Accepted2/21ms500 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms508 KiB
8Accepted2/23ms316 KiB
9Accepted2/23ms316 KiB
10Accepted2/24ms424 KiB
11Accepted2/24ms316 KiB
12Accepted2/212ms612 KiB
13Accepted2/29ms508 KiB
14Accepted2/220ms876 KiB
15Accepted3/332ms1600 KiB
16Accepted4/435ms1796 KiB
17Accepted4/450ms2012 KiB
18Accepted3/343ms1992 KiB
19Accepted3/339ms1824 KiB
20Accepted3/3111ms3128 KiB
21Accepted3/3125ms3596 KiB
22Accepted3/3126ms3700 KiB