248422026-02-16 00:39:09999Kerékpártúra (50 pont)cpp17Elfogadva 50/50138ms6196 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main() {
    int n,m,k;cin>>n>>m>>k;
    k--;
    vector<vector<int>> v(n),g(n);
    queue<int> q,q1;
    vector<int> vis(n),viss(n);
    vis[k]=1;
    viss[k]=1;
    q1.push(k);
    q.push(k);
    for(int i = 0;i<m;i++){
        int U,V;cin>>U>>V;
        U--;V--;
        v[U].push_back(V);
        g[V].push_back(U);
    }
    while(!q.empty()){
        int a=q.front();
        q.pop();
        for(int U : g[a]){
            if(!vis[U]){
                vis[U]=1;
                q.push(U);
            }
        }
    }
    while(!q1.empty()){
        int a=q1.front();
        q1.pop();
        for(int U : v[a]){
            if(!viss[U]){
                viss[U]=1;
                q1.push(U);
            }
        }
    }
    set<int> ans;
    for(int i = 0;i<n;i++){
        if(vis[i]==0||viss[i]==0)continue;
        if(i!=k)ans.insert(i);
        for(int U : v[i]){
            //cout<<U<<' '<<vis[U]<<endl;
            if(viss[U]&&vis[U]==0)ans.insert(U);
        }
    }
    if(ans.empty()){
        cout<<0;return 0;
    }
    cout<<ans.size()<<endl;
    for(int i : ans)cout<<i+1<<' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/019ms1844 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms500 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/23ms348 KiB
9Elfogadva2/23ms432 KiB
10Elfogadva2/24ms564 KiB
11Elfogadva2/24ms564 KiB
12Elfogadva2/212ms916 KiB
13Elfogadva2/210ms820 KiB
14Elfogadva2/221ms1336 KiB
15Elfogadva3/337ms2492 KiB
16Elfogadva4/441ms2620 KiB
17Elfogadva4/459ms3364 KiB
18Elfogadva3/354ms3036 KiB
19Elfogadva3/348ms2868 KiB
20Elfogadva3/3120ms5564 KiB
21Elfogadva3/3137ms5860 KiB
22Elfogadva3/3138ms6196 KiB