84702024-01-17 09:28:57abcdeKerékpártúra (50 pont)cpp17Elfogadva 50/50134ms10928 KiB
#include <bits/stdc++.h>

using namespace std;

int n,m,k;
vector<vector<int>>g1;
vector<vector<int>>g2;
vector<bool>vis1;
vector<bool>vis2;
vector<bool>ok;

void dfs1(int v)
{
    vis1[v]=true;
    for(int x:g1[v])
    {
        if(!vis1[x])
        dfs1(x);
    }
}

void dfs2(int v)
{
    vis2[v]=true;
    for(int x:g2[v])
    {
        if(!vis2[x])
        dfs2(x);
    }
}

void dfs3(int v)
{
    for(int x:g1[v])
    {
        ok[x]=true;
    }
}


int main()
{

    cin>>n>>m>>k;
    g1.resize(n+1);
    g2.resize(n+1);
    vis1.resize(n+1);
    vis2.resize(n+1);
    while(m--)
    {
        int u,v;
        cin>>u>>v;
        g1[u].push_back(v);
        g2[v].push_back(u);
    }
    dfs1(k);
    dfs2(k);
    ok.resize(n+1,0);
    for(int i=1;i<=n;i++)
    {
        if(vis1[i] && vis2[i])
        {
            ok[i];
            dfs3(i);
        }
    }
    vector<int>mo;
    for(int i=1;i<=n;i++)
    {
        if(ok[i])
        {
            mo.push_back(i);
        }
    }
    cout<<mo.size()-1<<endl;
    for(int x:mo)
    {
        if(x!=k)
        {
            cout<<x<<" ";
        }
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1808 KiB
2Elfogadva0/021ms4448 KiB
3Elfogadva2/23ms2424 KiB
4Elfogadva2/23ms2604 KiB
5Elfogadva2/23ms2792 KiB
6Elfogadva2/23ms2776 KiB
7Elfogadva2/23ms2780 KiB
8Elfogadva2/24ms2984 KiB
9Elfogadva2/24ms2940 KiB
10Elfogadva2/24ms3144 KiB
11Elfogadva2/27ms3328 KiB
12Elfogadva2/213ms3612 KiB
13Elfogadva2/212ms3580 KiB
14Elfogadva2/223ms4364 KiB
15Elfogadva3/335ms6768 KiB
16Elfogadva4/439ms6848 KiB
17Elfogadva4/454ms7880 KiB
18Elfogadva3/348ms7868 KiB
19Elfogadva3/341ms7580 KiB
20Elfogadva3/3120ms10336 KiB
21Elfogadva3/3133ms10488 KiB
22Elfogadva3/3134ms10928 KiB