手写邻接表 BFS
#include <iostream>
#include <queue>
using namespace std;
const int maxn = 100000;
const int maxm = 300000;
struct Graph {
int NE , NV;
int head[maxn];
struct Node{
int next , v;
Node(){}
Node(int a,int b):v(a) , next(b){}
}E[maxm];
void clear(int n) {
NV = n;
NE = 0;
memset(head,-1,sizeof(int)*n);
}
inline void Insert(int u,int v) {
E[NE] = Node(v , head[u]);
head[u] = NE ++;
}
void Print() {
for(int i = 0 ; i < NV ; i ++) {
printf("%d:",i);
for(int j = head[i]; j != -1; j = E[j].next){
printf(" %d",E[j].v);
}
puts("");
}
}
}G;
int n, m, ctr;
int visit[maxn];
void BFS(int cur) {
queue<int> Q;
Q.push(cur);
visit[cu