#pragma once
template<typenameGRAPH>std::pair<std::vector<int>,std::vector<int>>BFS(constGRAPH&g,ints=0){assert(g.is_prepared());std::vector<int>d(g.n,-1),pre(g.n,-1);std::queue<int>que;d[s]=0;que.push(s);while(que.size()){intv=que.front();que.pop();for(intto:g[v])if(d[to]<0){d[to]=d[v]+1;que.push(to);}}return{d,pre};}