152412025-02-17 16:17:40mateKerékpártúra (50 pont)cpp17Időlimit túllépés 16/50500ms2356 KiB
#include <bits/stdc++.h>
using namespace std;

vector <vector <int>> g;
vector <bool> jart;
set <int> ans;
vector <bool> bejart;
int n,k;
bool igaz = 0;

void dfs(int p){
    if(p == k){
        igaz = 1;
        return;
    }
    jart[p] = 1;
    for(int x : g[p]){
        if(!jart[x]){
            dfs(x);
        }
    }
    if(igaz){
        bejart[p] = 1;
    }
}


int main() {
	int m; cin >> n >> m >> k;
    g.resize(n+1);
    jart.resize(n+1,0);
    bejart.resize(n+1,0);
    int a,b;
    for(int i = 0; i < m; i++){
        cin >> a >> b;
        g[a].push_back(b);
    }
    for(int i = 1; i <= n; i++){
        if(bejart[i]){
            for(int x : g[i]){
                ans.insert(x);
            }
            continue;
        }  
        jart.assign(n+1,0);
        igaz = 0;
        dfs(i);
        bejart[i] = igaz;
        if(bejart[i]){
            for(int x : g[i]){
                ans.insert(x);
            }
            //ans.insert(i);            
        } 
        
    }
    
    cout << ans.size()-1 << '\n';
    for(int x : ans){
        if(x == k)  continue;
        cout << x << ' ';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base16/50
1Elfogadva0/01ms316 KiB
2Időlimit túllépés0/0488ms1076 KiB
3Elfogadva2/21ms508 KiB
4Elfogadva2/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/23ms316 KiB
9Elfogadva2/27ms316 KiB
10Elfogadva2/212ms316 KiB
11Hibás válasz0/214ms508 KiB
12Hibás válasz0/237ms544 KiB
13Elfogadva2/282ms620 KiB
14Elfogadva2/2136ms680 KiB
15Hibás válasz0/397ms1844 KiB
16Hibás válasz0/459ms1844 KiB
17Hibás válasz0/463ms2100 KiB
18Hibás válasz0/359ms2116 KiB
19Hibás válasz0/352ms1984 KiB
20Időlimit túllépés0/3474ms2100 KiB
21Időlimit túllépés0/3474ms2356 KiB
22Időlimit túllépés0/3500ms2276 KiB