200782025-12-31 17:17:57AblablablaAdószedőcpp17Elfogadva 30/30223ms11072 KiB
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

int main()
{
    int n, m, fo;
    cin >> n >> m >> fo;
    fo--;

    vector<vector<pii>> csucsok(n, vector<pii>());
    vector<pii> elek(m);
    for(int i = 0; i < m; i++){
        int a, b;
        cin >> a >> b;
        elek[i] = {a, b};
        a--; b--;

        csucsok[a].push_back({b, i});
        csucsok[b].push_back({a, i});
    }

    vector<int> tav(n, -1);
    queue<int> bejar;
    bejar.push(fo);
    tav[fo] = 0;
    vector<bool> kell(m);
    int db = 0;

    while(!bejar.empty()){
        int akt = bejar.front();
        bejar.pop();

        for(auto [x, ind] : csucsok[akt]){
            if(tav[x] == -1){
                tav[x] = tav[akt] + 1;
                bejar.push(x);
                kell[ind] = 1;
                db++;
            } else{
                if(tav[x] == tav[akt] + 1){
                    kell[ind] = 1;
                    db++;
                }
            }
        }
    }

    cout << db << "\n";
    for(int i = 0; i < m; i++){
        if(kell[i]){
            cout << elek[i].first << " " << elek[i].second << "\n";
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base30/30
1Elfogadva0/01ms316 KiB
2Elfogadva0/0187ms9272 KiB
3Elfogadva1/11ms508 KiB
4Elfogadva1/12ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Elfogadva1/11ms508 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva2/22ms316 KiB
10Elfogadva2/23ms316 KiB
11Elfogadva2/22ms500 KiB
12Elfogadva2/214ms1092 KiB
13Elfogadva2/232ms1972 KiB
14Elfogadva2/2146ms7220 KiB
15Elfogadva1/1188ms11060 KiB
16Elfogadva1/1159ms8500 KiB
17Elfogadva2/2223ms11060 KiB
18Elfogadva2/2188ms9524 KiB
19Elfogadva2/2201ms10292 KiB
20Elfogadva2/2206ms10324 KiB
21Elfogadva2/2202ms11072 KiB