312212026-08-05 17:56:34DzsakabTalálka *cpp17Hibás válasz 15/100140ms2880 KiB
#include <bits/stdc++.h>
#include <climits>
#include <cmath>
#include <stack>
#include <vector>
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;
    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 >> h >> k;
    q1.push(h);
    q2.push(k);
    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(c[i]+d[i]>0 and c[i]+d[i]<vissza1){
            vissza1=c[i]+d[i];
            vissza2=i;
        }
    }
    vissza1= vissza2;
    cout <<min(c[vissza2],d[vissza2]) <<" "<<vissza2 << endl;
    if(c[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;
    if(d[vissza2]<INT_MAX){
        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
base15/100
1Hibás válasz0/61ms508 KiB
2Hibás válasz0/61ms500 KiB
3Hibás válasz0/61ms316 KiB
4Hibás válasz0/61ms316 KiB
5Elfogadva6/61ms316 KiB
6Hibás válasz0/61ms316 KiB
7Hibás válasz0/61ms500 KiB
8Hibás válasz0/62ms316 KiB
9Részben helyes2/72ms552 KiB
10Elfogadva7/71ms316 KiB
11Időlimit túllépés0/7138ms2728 KiB
12Időlimit túllépés0/7138ms2816 KiB
13Időlimit túllépés0/8138ms2744 KiB
14Időlimit túllépés0/8138ms2868 KiB
15Időlimit túllépés0/8140ms2880 KiB