Pagini recente » Cod sursa (job #2413663) | Cod sursa (job #177497) | Cod sursa (job #2540638) | Cod sursa (job #455978) | Cod sursa (job #1094068)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream in("grafxy.in");
ofstream out("grafxy.out");
vector <int> v[100001];
queue <int> c;
int n,m,p1,p2,x[100001],y[100001],viz[100001],aux;
void citire ()
{ int a,b;
in>>n>>m;
for(int i=1; i<=m; i++)
{in>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
in>>p1;
for(int i=1; i<=p1;i++)
in>>x[i];
in>>p2;
for(int i=1;i<=p2;i++)
in>>y[i];
}
bool test(int a)
{
for(int i=1; i<=p2; i++)
if(a==y[i])
return 1 ;
return 0;
}
int bfs (int varf)
{
c.push(varf);
while(!c.empty() )
{
for(int i=0; i<v[c.front()].size();i++)
{ if(viz[v[c.front()][i]]==0 && v[c.front()][i]!=aux )
{
viz[v[c.front()][i]]=viz[c.front()]+1;
c.push(v[c.front()][i]);
}
if(test(v[c.front()][i])==1)
{
out<<viz[v[c.front()][i]]+1<<'\n';
return 0;
}
}
c.pop();
}
}
int main ()
{
citire();
for(int i=1; i<=p1; i++)
{ aux=x[i];
bfs(x[i]);
for(int j=1; j<=n; j++)
viz[j]=0;
}
in.close();
out.close();
return 0;
}