Cod sursa(job #1094068)

Utilizator Bigb21Avram Bogdan Bigb21 Data 28 ianuarie 2014 21:19:25
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#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;

 }