312072026-08-05 11:58:13BoldizsárTalálka *cpp17Elfogadva 100/10057ms2624 KiB
#include <bits/stdc++.h>
using namespace std;
int bfs(vector<vector<int>>& g,vector <int>&parent ,vector<bool>&volt, int n,vector<bool>&volt2,vector<int>&parent2,int a,int b){
    queue<int>v;v.push(a);volt[a] = true;
    queue<int>t;t.push(b);volt2[b] =true;
    while(!v.empty() || !t.empty()){
        if(!v.empty()){
            //cout << "v " << v.front() << "\n";
            for(int i : g[v.front()]){
                //cout << i << " ";
                if(volt[i] == false){
                    v.push(i);
                    parent[i] = v.front();
                    volt[i] = true;
                }
                if(volt2[i] == true) return i;
            }
            v.pop();
            //cout << endl;
        }
        if(!t.empty()){
            //cout << "t " << t.front() << "\n";
            for(int i :g[t.front()]){
                //cout << i;
                if(volt2[i] == false){
                    t.push(i);
                    parent2[i] =t.front();
                    volt2[i] = true;
                }
                if(volt[i] == true) return i;
            }
            t.pop();
            //cout << endl;
        }
    }
    return -1;
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
	int n,m;cin >> n >> m;
    int a,b;cin >> a >> b;
    if(a == b) {cout << 0 << " "<< a << "\n" << a << "\n" << b;return 0 ;}
    vector<vector<int>>g(n+1); 
    vector<int>parent(n+1,-1);
    vector<int>parent2(n+1,-1);
    vector<bool>volt(n+1,false);
    vector<bool>volt2(n+1,false);
    for(int i = 0;i <m;i++){
        int c,d;cin >> c >> d;
        g[c].push_back(d);
    }
    int ans = bfs(g,parent,volt,n,volt2,parent2,a,b);
    int cur = ans;
    int cur2 = ans;
    vector<int>ut;ut.push_back(ans);
    vector<int>ut2;ut2.push_back(ans);
    if(ans == -1){
        cout << -1;
        return 0;
    }else{
        while(parent[cur] != -1){ut.push_back(parent[cur]);cur = parent[cur];}
        while(parent2[cur2] != -1){ut2.push_back(parent2[cur2]);cur2 = parent2[cur2];}
    }
    
    cout << max(ut.size(),ut2.size())-1 << " ";
    cout << ans << "\n";
    reverse(ut.begin(),ut.end());reverse(ut2.begin(),ut2.end());
    for(auto i : ut) cout << i << " ";
    cout << "\n";
    for(auto i : ut2) cout << i << " ";
    return 0;
    cout << endl;
    for(auto i : parent) cout << i << " ";
    cout << endl;
    for (auto i : parent2) cout << i << " ";


}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva6/62ms316 KiB
2Elfogadva6/62ms316 KiB
3Elfogadva6/62ms316 KiB
4Elfogadva6/62ms316 KiB
5Elfogadva6/61ms316 KiB
6Elfogadva6/61ms316 KiB
7Elfogadva6/61ms316 KiB
8Elfogadva6/61ms508 KiB
9Elfogadva7/71ms388 KiB
10Elfogadva7/71ms424 KiB
11Elfogadva7/756ms2420 KiB
12Elfogadva7/756ms2600 KiB
13Elfogadva8/856ms2624 KiB
14Elfogadva8/857ms2612 KiB
15Elfogadva8/857ms2612 KiB