#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
const int N=100005,INF=2147483647;
int dis[N],vis[N],s,t,n,m,x,y,w;
struct quan{
int d,v;
bool operator>(const quan a) const{return d>a.d;}
};
priority_queue<quan,vector<quan>,greater<quan> > q;
struct bian{
int v,w;
};
vector<bian> e[N];
void Dijkstra(){
while(!q.empty()){
int u=q.top().v;
q.pop();
if(vis[u]) continue;
vis[u]=1;
for(auto ed:e[u]){
int v=ed.v,w=ed.w;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
q.push({dis[v],v});
}
}
}
}
int main(){
scanf("%d %d %d\n%d\n",&n,&m,&s,&t);
for(int i=1;i<=n;i++) dis[i]=INF;
dis[s]=1;
for(int i=1;i<=m;i++){
scanf("%d %d\n",&x,&y);
e[x].push_back({y,1});
e[y].push_back({x,1});
}
q.push({1,s});
Dijkstra();
int mx=-1;
for(int i=1;i<=n;i++){
mx=max(mx,dis[i]);
}
cout<<mx+t;
return 0;
}
样例:
4 3 1
2
1 2
1 3
2 4
为什么我的代码要多输入一个数字才能结束?