求调
查看原帖
求调
1028442
linruizhe111楼主2024/8/24 22:18
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
#include <utility>
using namespace std;
const int N = 1e5+10;

int n,m,f[N],d[N];
queue<int> q;
vector<pair<int,int> > g[N];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)   
        d[i]=1e9;
    int x,y;
    for(int i=1;i<=m;i++){
        cin>>x>>y;
        g[x].push_back(make_pair(y,1));       
    }
    q.push(1);
    d[1]=1;
    f[1]=1;
    while(!q.empty()){
        int k=q.front();
        for(auto j:g[k]){
            int pos=j.first;
                if(d[pos]>d[k]+1){
                    d[pos]=d[k]+1;
                    if(f[pos]==0)q.push(pos),f[pos]=1;
                }
            }
        q.pop();
        f[k]=0;
    }
    if(d[m]==1e9)cout << "-1";
    else cout << d[m];
    return 0;
}
2024/8/24 22:18
加载中...