120982024-12-02 15:13:38madvirKerékpártúra (50 pont)cpp11Futási hiba 0/50501ms32000 KiB
#include <iostream>
#include <set>
#include <iterator>

using namespace std;

int a[10001][10001]={0};
set<int> oda[10001], cel, tart, used;

int megy(int x, int k) {
    used.insert(x);
    //if(x==6) cout << 6666;
    for(set<int>::iterator ptr2=oda[x].begin(); ptr2!=oda[x].end(); ptr2++) {
        //cout << *ptr2 << " ";
        //if(x==6) cout << 6666 << "+" << *ptr2 <<" ";
        if(*ptr2==k || oda[*ptr2].find(k)!=oda[*ptr2].end()) {
            return 1;
        }
        else {
            if(used.find(*ptr2)==used.end()) {
                //if(x==6) cout << 6666 << "ujrahivas" << " ";
                megy(*ptr2,k);
            }
        }
    }
    //cout << endl;
    return 0;
}

int arra(int x, int k) {
    for(set<int>::iterator ptr=oda[x].begin(); ptr!=oda[x].end(); ptr++) {
        //cout << megy(*ptr,k) << " ";
        if(megy(*ptr,k)) {
            //cout << "*ptr=" << *ptr << endl;
            cel.insert(oda[*ptr].begin(),oda[*ptr].end());
            arra(*ptr,k);
        }
    }
    return 0;
}

int main()
{
    int n, m, k, x, y;
    cin >> n >> m >> k;
    for(int i=1; i<=m; i++) {
        cin >> x >> y;
        a[x][y]=1;
        oda[x].insert(y);
        if(x==k && y!=k) {
            //cout << "x=" << x << endl;
            tart.insert(y);
            cel.insert(y);
        }
    }
    for(set<int>::iterator ptr=tart.begin(); ptr!=tart.end(); ptr++) {
        //cout << *ptr << " : " << megy(*ptr,k) << " xxx ";
        used.empty();
        if(megy(*ptr,k)) {
            //cout << *ptr << endl;
            cel.insert(oda[*ptr].begin(), oda[*ptr].end());
            arra(*ptr,k);
        }
    }

    ///ird ki

    if(cel.find(k)!=cel.end()) cel.erase(k);

    if(cel.size()>0) {
        cout << cel.size() << endl;
        for(set<int>::iterator ptr=cel.begin(); ptr!=cel.end(); ptr++) {
            cout << *ptr << " ";
        }
    }
    else cout << 0;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Elfogadva0/01ms1016 KiB
2Futási hiba0/034ms32000 KiB
3Futási hiba0/250ms32000 KiB
4Hibás válasz0/21ms1004 KiB
5Hibás válasz0/21ms824 KiB
6Időlimit túllépés0/2423ms32000 KiB
7Futási hiba0/287ms32000 KiB
8Futási hiba0/2210ms32000 KiB
9Futási hiba0/252ms32000 KiB
10Hibás válasz0/24ms2616 KiB
11Hibás válasz0/29ms6200 KiB
12Időlimit túllépés0/2500ms8028 KiB
13Időlimit túllépés0/2501ms27820 KiB
14Futási hiba0/2379ms32000 KiB
15Futási hiba0/337ms32000 KiB
16Futási hiba0/437ms32000 KiB
17Futási hiba0/437ms32000 KiB
18Futási hiba0/330ms32000 KiB
19Futási hiba0/330ms32000 KiB
20Futási hiba0/385ms32000 KiB
21Futási hiba0/337ms32000 KiB
22Futási hiba0/334ms32000 KiB