312252026-08-05 20:28:32DzsakabTalálka *cpp17Hibás válasz 6/100145ms2876 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n , m , h, k;
    cin >> n >> m;
    int vissza1 = INT_MAX;
    int vissza2 = 0;
    queue <int> q1;
    queue <int> q2;
    int romeo ,juliet;
    stack<int> s;
    vector <int> ut1(n+1);
    vector <int> ut2(n+1);
    vector<int> c(n+1,INT_MAX);
    vector<int> d(n+1,INT_MAX);
    vector<vector<int>> a(n+1);
    cin >> romeo >> juliet;
    q1.push(romeo);
    q2.push(juliet);
    c[q1.front()]=1;
    d[q2.front()]=1;
    for(int i=1; i<=m; i++){
        cin >> h >> k;
        a[h].push_back(k);
    }
    while(!q1.empty()){
        for(int i : a[q1.front()]){
            if(c[q1.front()]+1<c[i]){
                c[i]=c[q1.front()]+1;
                q1.push(i);
                ut1[i]=q1.front();
            }
        }
        q1.pop();
    }
    while(!q2.empty()){
        for(int i : a[q2.front()]){
            if(d[q2.front()]+1<d[i]){
                d[i]=d[q2.front()]+1;
                q2.push(i);
                ut2[i]=q2.front();
            }
        }
        q2.pop();
    }
    for(int i =1;i<=n;i++){
        if(max(c[i],d[i])>0 and max(c[i],d[i])<vissza1){
            vissza1=max(c[i],d[i]);
            vissza2=i;
        }
    }
    vissza1= vissza2;
    cout <<min(c[vissza2],d[vissza2]) <<" "<<vissza2 << endl;
    if(c[vissza1]<INT_MAX and d[vissza1] < INT_MAX){
        while(c[vissza1]>1){
            s.push(ut1[vissza1]);
            vissza1=ut1[vissza1];
        }
        if(!s.empty()){
            while(!s.empty()){
                cout << s.top() << " "; 
                s.pop();
            }
            cout <<vissza2 <<endl;
        }
        vissza1=vissza2;
        while(d[vissza2]>1){
            s.push(ut2[vissza2]);
            vissza2=ut2[vissza2];
        }
        if(!s.empty()){
            while(!s.empty()){
                cout << s.top() << " "; 
                s.pop();
            }
            cout << vissza1;
        }
    }else cout << -1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/100
1Hibás válasz0/62ms316 KiB
2Hibás válasz0/62ms508 KiB
3Hibás válasz0/62ms316 KiB
4Hibás válasz0/62ms316 KiB
5Elfogadva6/61ms316 KiB
6Hibás válasz0/61ms316 KiB
7Hibás válasz0/61ms316 KiB
8Hibás válasz0/61ms508 KiB
9Hibás válasz0/71ms316 KiB
10Hibás válasz0/72ms404 KiB
11Időlimit túllépés0/7143ms2800 KiB
12Időlimit túllépés0/7145ms2836 KiB
13Időlimit túllépés0/8143ms2768 KiB
14Időlimit túllépés0/8143ms2672 KiB
15Időlimit túllépés0/8143ms2876 KiB