#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
int N,M,K;
vector<int> G[10001];
struct node{
int num;
int level;
};
int vis[10001],pro[10001];
int ans,level;
int bfs(int num){
vis[num]=1;
queue<node> q;
struct node p,t;
p.num=num;
p.level=0;
q.push(p);
while(!q.empty()){
t=q.front();
q.pop();
if(level<t.level){//思路找出同一层中编号最小的。
ans=t.num;
level=t.level;
}
else if(level==t.level){
if(ans>t.num){
level=t.level;
ans=t.num;
}
}
int num=t.num;
for(int i=0;i<G[num].size();i++){
if(vis[G[num][i]]==0){
vis[G[num][i]]=1;
p.num=G[num][i];
p.level=t.level+1;
q.push(p);
}
}
}
}
int main(){
int a,b;
scanf("%d%d%d",&N,&M,&K);
memset(vis,0,sizeof(vis));
for(int i=0;i<M;i++){
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
for(int i=0;i<K;i++){
scanf("%d",&pro[i]);
}
for(int i=0;i<K;i++){
bfs(pro[i]);
printf("%d\n",ans);
ans=0;level=0;
memset(vis,0,sizeof(vis));
}
return 0;
}
L3-008. 喊山 天梯初赛
猜你喜欢
转载自blog.csdn.net/chan_yeol/article/details/51606229
今日推荐
周排行