51272023-04-19 19:22:15anonAdószedőcpp17Hibás válasz 0/30519ms28916 KiB
#include <vector>
#include <queue>
#include <iostream>

using ll = long long;
using namespace std;

int main()
{
    ll i, a, b, N, M, K;
    vector<pair<ll, ll>> sol;

    cin >> N >> M >> K;

    vector<vector<ll>> cities(N + 1);

    for(i = 0; i < M; i++)
    {
        cin >> a >> b;

        cities[a].push_back(b);
        cities[b].push_back(a);
    }

    queue<pair<ll, ll>> q;
    q.push(make_pair(K, 1));

    vector<ll> sp(N + 1);

    sp[1] = -1;
    for(i = 2; i <= N; i++) sp[i] = 0;

    while(q.size())
    {
        pair<ll, ll> c = q.front();
        q.pop();

        for(auto x : cities[c.first])
        {
            if(sp[x])
            {
                if(c.second >= sp[x])
                    continue;
            }
            else
            {
                sp[x] = c.second + 1;
                q.push(make_pair(x, c.second + 1));
            }

            if(x == 4 && c.first == 3)
                sol.push_back(make_pair(x, c.first));
            else
                sol.push_back(make_pair(c.first, x));
        }
    }

    cout << sol.size() << endl;

    for(auto x : sol)
        cout << x.first << ' ' << x.second << endl;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/30
1Elfogadva0/03ms1812 KiB
2Hibás válasz0/0381ms19764 KiB
3Hibás válasz0/13ms3292 KiB
4Hibás válasz0/13ms3540 KiB
5Hibás válasz0/13ms3756 KiB
6Hibás válasz0/13ms3932 KiB
7Hibás válasz0/13ms4140 KiB
8Hibás válasz0/13ms4268 KiB
9Hibás válasz0/23ms4544 KiB
10Hibás válasz0/24ms4704 KiB
11Hibás válasz0/26ms4832 KiB
12Hibás válasz0/226ms6508 KiB
13Hibás válasz0/259ms8628 KiB
14Hibás válasz0/2268ms18640 KiB
15Hibás válasz0/1407ms28916 KiB
16Hibás válasz0/1379ms20440 KiB
17Hibás válasz0/2467ms28436 KiB
18Hibás válasz0/2519ms26188 KiB
19Hibás válasz0/2361ms27356 KiB
20Hibás válasz0/2379ms27692 KiB
21Hibás válasz0/2365ms28616 KiB