129682025-01-04 11:17:41PallanekPéterKerékpártúra (50 pont)cpp17Accepted 50/50137ms4016 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,m,k;
    cin >> n >> m >> k;
    vector<vector<int>> graf1(n);
    vector<vector<int>> graf2(n);
    vector<int> seen1(n,0);
    vector<int> seen2(n,0);
    for (int i=0;i<m;i++){
        int u,v; cin >> u >> v;
        graf1[u-1].push_back(v-1);
        graf2[v-1].push_back(u-1);
    }
    vector<int> ans;
    queue<int> Q;
    Q.push(k-1);
    seen1[k-1]=2;
    seen2[k-1]=2;
    while(!Q.empty()){
        int u=Q.front();
        Q.pop();
        seen2[u]=1;
        for(int v:graf1[u]){
            if (seen1[v]==0){
                ans.push_back(v+1);
                seen1[v]=1;
            }
        }
        for(int v:graf2[u]){
            if (seen2[v]==0){
                Q.push(v);
            }
        }
        seen2[u]=2;
    }
    cout << ans.size() << "\n";
    for (int i:ans){
        cout << i << " ";
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms500 KiB
2Accepted0/019ms1440 KiB
3Accepted2/21ms320 KiB
4Accepted2/21ms508 KiB
5Accepted2/21ms360 KiB
6Accepted2/21ms320 KiB
7Accepted2/21ms320 KiB
8Accepted2/22ms320 KiB
9Accepted2/23ms320 KiB
10Accepted2/24ms468 KiB
11Accepted2/24ms568 KiB
12Accepted2/210ms748 KiB
13Accepted2/210ms720 KiB
14Accepted2/220ms944 KiB
15Accepted3/332ms1656 KiB
16Accepted4/435ms1784 KiB
17Accepted4/450ms2132 KiB
18Accepted3/343ms2104 KiB
19Accepted3/337ms1828 KiB
20Accepted3/3134ms3488 KiB
21Accepted3/3137ms3984 KiB
22Accepted3/3135ms4016 KiB