全部评论 1

  • #include<bits/stdc++.h>
    using namespace std;
    int n,m,a,b,v[100010];
    vector<int> ve[100010];
    void bfs(){
        queue<int> q;
        bool vis[100010]={0};
        v[a]=1;
        q.push(a);
        int sum=0;
        while(q.size()){
            for(int i=q.size();i>=1;i--){
                int u=q.front();
                q.pop();
                if(u==b){
                    cout<<v[b]-v[a]+sum;
                    return ;
                }
                for(auto i:ve[u]){
                    if(!vis[i]){
                        q.push(i);
                        vis[i]=1;
                    }
                }
            }
            sum++;
        }
        cout<<"No solution";
        return ;
    }
    int main(){
        cin>>n>>m>>a>>b;
        for(int i=0;i<n;i++){
            cin>>v[i];
        }
        for(int i=1;i<=m;i++){
            int x,y;
            cin>>x>>y;
            ve[x].push_back(y);
        }
        bfs();
    }
    

    我的为什么不对啊

    5天前 来自 广东

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页