单独写一个连通分量的类
代码
#pragma once
#include <iostream>
using namespace std;
template <typename Graph>
class component {
private:
Graph& G;
bool* visited;
int ccount;
int* connected;
//将深度优先遍历写在私有里
void dfs(int v) {
visited[v] = true; //记录该点被访问
connected[v] = ccount; //属于同一个连通分量的顶点,连通分量一样
typename Graph::adjIterator adj(G, v); //遍历与该顶点相连的边
for (int it = adj.begin(); !