85362024-01-21 16:31:45qertendKerékpártúra (50 pont)cpp17Időlimit túllépés 24/50467ms16652 KiB
#include <iostream>
#include <list>
using namespace std;

bool hasInt(int target, list<int> field) {
    for (int i : field) {
        if (i == target) return true;
    }
    return false;
}

int main()
{
    int numberOfNodes, routes, startID;
    cin >> numberOfNodes;
    cin >> routes;
    cin >> startID;

    struct Node {
        list<int> outgoing;
        list<int> incoming;
        void connected(list<int> &connectedByIncoming, list<int> &connectedByOutgoing,Node nodesList[]) {
            for (int i : incoming) {
                if (!hasInt(i, connectedByIncoming)) {
                    connectedByIncoming.push_back(i);
                    nodesList[i].connected(connectedByIncoming, connectedByOutgoing, nodesList);
                }
            }
            for (int i : outgoing) {
                if (!hasInt(i, connectedByOutgoing)) connectedByOutgoing.push_back(i);
            }
        }
    };
    Node nodes[numberOfNodes];

    //read all routes from stdin
    for (int i = 0; i < routes; i++) {
        int startPoint, endPoint;
        cin >> startPoint;
        cin >> endPoint;
        Node &startNode = nodes[startPoint-1];
        Node &endNode = nodes[endPoint-1];
        startNode.outgoing.push_back(endPoint-1);
        endNode.incoming.push_back(startPoint-1);
    }

    list<int> connectedByIncoming;
    list<int> connectedByOutgoing;
    nodes[startID-1].connected(connectedByIncoming, connectedByOutgoing, nodes);
    list<int> allConnected;
    allConnected.merge(connectedByIncoming);
    for (int i : connectedByOutgoing) {
        if (!hasInt(i, allConnected)) allConnected.push_back(i);
    }
    int size = allConnected.size();
    if (hasInt(startID-1, allConnected)) size--;
    cout << size << "\n";
    for (int i : allConnected) {
        if (i != startID - 1) cout << i+1 << " ";
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base24/50
1Elfogadva0/03ms1684 KiB
2Elfogadva0/061ms6156 KiB
3Elfogadva2/23ms2408 KiB
4Elfogadva2/23ms2360 KiB
5Elfogadva2/23ms2744 KiB
6Elfogadva2/23ms2720 KiB
7Elfogadva2/23ms2924 KiB
8Elfogadva2/26ms3588 KiB
9Elfogadva2/24ms3976 KiB
10Elfogadva2/26ms4268 KiB
11Elfogadva2/28ms4528 KiB
12Elfogadva2/217ms6308 KiB
13Elfogadva2/268ms6160 KiB
14Elfogadva2/2137ms8828 KiB
15Időlimit túllépés0/3463ms6848 KiB
16Időlimit túllépés0/4446ms7296 KiB
17Időlimit túllépés0/4458ms8912 KiB
18Időlimit túllépés0/3467ms8524 KiB
19Időlimit túllépés0/3467ms8040 KiB
20Időlimit túllépés0/3467ms15024 KiB
21Időlimit túllépés0/3456ms16652 KiB
22Időlimit túllépés0/3451ms16636 KiB