155732025-02-20 17:00:44horkaA lehető legkevesebb metróval utazás (40 pont)cpp17Elfogadva 40/40128ms11172 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n,m,kezd,veg; cin>>n>>m>>kezd>>veg;
    vector<vector<int>> adj(n+m+1);
    for(int i=1; i<=n; i++)
    {
        int db; cin>>db;
        while(db--)
        {
            int x; cin>>x;
            adj[x].push_back(i+m);
            adj[i+m].push_back(x);
        }
    }
    int inf=1005;
    vector<int> dist(n+m+1, inf),el(n+m+1);
    dist[kezd]=0;
    queue<int> q;
    q.push(kezd);
    while(!q.empty())
    {
        int cs=q.front();
        q.pop();
        for(int &i:adj[cs])
            if(dist[cs]+1<dist[i])
        {
            dist[i]=dist[cs]+1;
            el[i]=cs;
            q.push(i);
        }
    }
    if(dist[veg]==inf)
    {
        cout<<"-1\n";
        return 0;
    }
    vector<int> ans;
    while(veg!=kezd)
    {
        veg=el[veg];
        if(veg>m) ans.push_back(veg-m);
    }
    cout<<ans.size()<<"\n";
    reverse(ans.begin(),ans.end());
    for(int i:ans)
        cout<<i<<" ";
    cout<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms512 KiB
2Elfogadva0/04ms1020 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/22ms564 KiB
8Elfogadva2/22ms564 KiB
9Elfogadva2/23ms820 KiB
10Elfogadva2/22ms564 KiB
11Elfogadva2/21ms564 KiB
12Elfogadva2/24ms1136 KiB
13Elfogadva2/24ms1144 KiB
14Elfogadva2/24ms1132 KiB
15Elfogadva2/2127ms11028 KiB
16Elfogadva2/2123ms11160 KiB
17Elfogadva2/2128ms11096 KiB
18Elfogadva2/2123ms11172 KiB
19Elfogadva2/23ms820 KiB
20Elfogadva2/23ms988 KiB
21Elfogadva2/22ms668 KiB
22Elfogadva2/24ms1080 KiB