#include<bits/stdc++.h>
using namespace std;
vector<int> head[100001];
bool vis[100001];
int dis[100001];
struct node
{
int dot,dis;
};
bool operator<(const node &x,const node &y)
{
return x.dis>y.dis;
}
priority_queue<node> q;
int main()
{
int i,j,k,n,m,p,c,u,v;
node temp;
cin>>n>>p>>c;
cin>>m;
for(i=1;i<=p;i++)
{
scanf("%d%d",&u,&v);
head[u].push_back(v);
head[v].push_back(u);
}
for(i=1;i<=n;i++)
{
dis[i]=10000000;
}
vis[c]=1;
dis[c]=0;
for(i=0;i<head[c].size();i++)
{
dis[head[c][i]]=dis[c]+1;
q.push({head[c][i],dis[c]+1});
}
for(i=1;i<=n;i++)
{
u=0;
j=0x3f3f3f3f;
while(!q.empty())
{
temp=q.top();
q.pop();
if(!vis[temp.dot])
{
u=temp.dot;
break;
}
}
vis[u]=1;
for(k=0;k<head[u].size();k++)
{
v=head[u][k];
if(!vis[v]&&dis[u]+1<dis[v])
{
dis[v]=dis[u]+1;
q.push({v,dis[v]});
}
}
}
k=0;
for(i=1;i<=n;i++)
{
if(dis[i]>k)
{
k=dis[i];
}
}
cout<<k+1+m;
}
请问37,60行是什么用法,q不是结构体吗