152452025-02-17 16:31:15mateKerékpártúra (50 pont)cpp17Időlimit túllépés 16/50500ms2376 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;
        bejart[p] = 1;
        return;
    }
    if(bejart[p] == 1){
        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);
            }          
        } 
        
    }
    if(ans.count(k)){
        cout << ans.size()-1 << '\n';
    }else
    cout << ans.size() << '\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/0486ms1076 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Elfogadva2/21ms332 KiB
8Elfogadva2/23ms316 KiB
9Elfogadva2/27ms508 KiB
10Elfogadva2/210ms316 KiB
11Hibás válasz0/214ms508 KiB
12Hibás válasz0/234ms548 KiB
13Elfogadva2/278ms564 KiB
14Elfogadva2/2116ms564 KiB
15Hibás válasz0/339ms1900 KiB
16Hibás válasz0/443ms1788 KiB
17Hibás válasz0/459ms2100 KiB
18Hibás válasz0/352ms1844 KiB
19Hibás válasz0/345ms2060 KiB
20Időlimit túllépés0/3500ms2100 KiB
21Időlimit túllépés0/3479ms2376 KiB
22Időlimit túllépés0/3481ms2296 KiB